Почему SSLCertificateKeyFile необходим для Apache? - PullRequest
22 голосов
/ 27 января 2011

Какова техническая причина, по которой необходим SSLCertificateKeyFile (закрытый ключ)? Где это используется и для чего?

Ответы [ 3 ]

22 голосов
/ 03 февраля 2011

Файл сертификата SSL содержит сертификат X.509 (который, в свою очередь, содержит открытый ключ, используемый для шифрования).Сертификат SSL Ключ Файл содержит закрытый ключ, соответствующий открытому ключу в сертификате.Чтобы веб-сервер мог шифровать трафик и , он должен иметь как открытый ключ (сертификат), так и соответствующий закрытый ключ.Apache, в отличие от многих других серверных продуктов, хранит ключ и сертификат в отдельных файлах.Например, продукты на основе Java обычно используют файлы Java KeyStore, которые являются зашифрованной базой данных, содержащей как сертификат, так и закрытый ключ.

15 голосов
/ 27 января 2011

Обычно есть три директивы:

SSLCertificateFile /opt/csw/apache2/certs/icompany/publicCert.pem
SSLCertificateChainFile /opt/csw/apache2/certs/icompany/chain.pem
SSLCertificateKeyFile /opt/csw/apache2/certs/icompany/PrivateKeyCert.pem

SSLCertificateFile должен содержать только открытую часть вашего сертификата, которую вы хотите доставить с веб-сайта клиенту.

Если указано SSLCertificateChainFile, веб-сервер будет прикреплять соответствующие сертификаты (для создания всей цепочки к корневому центру сертификации) к сертификату веб-сервера. Вы также можете поместить частную часть вашего сертификата в файл, как указано в SSLCertificateFile, но это НЕ рекомендуется из соображений безопасности (например, на веб-сервере есть ошибка, возникает буфер потока и печатается частная ключ к атакующему).

Вместо этого поместите только закрытый ключ в отдельный файл и объявите его в SSLCertificateKeyFile

0 голосов
/ 27 января 2011

Для обзора криптографии с открытым ключом, включая использование закрытых ключей:

http://en.wikipedia.org/wiki/Public-key_cryptography#How_it_works

И подробное описание всех шагов, используемых в TLS, протокол, используемый вашим сервером для трафика https, который точно указывает, где используется закрытый ключ:

http://en.wikipedia.org/wiki/Transport_Layer_Security

...