Какова техническая причина SSLCertificateKeyFile (частный ключ)? Где это используется и для чего?
Почему для Apache требуется SSLCertificateKeyFile?
Ответ 1
Файл сертификата SSL содержит сертификат X.509 (который, в свою очередь, содержит открытый ключ, используемый для шифрования). Файл ключа SSL-сертификата содержит закрытый ключ, соответствующий открытому ключу сертификата. Для того, чтобы веб-сервер шифровал и расшифровывал трафик, он должен иметь как открытый ключ (сертификат), так и соответствующий закрытый ключ. Apache, в отличие от многих других серверных продуктов, хранит ключ и сертификат в отдельных файлах. Например, продукты на основе Java обычно используют файлы Java KeyStore, которые являются зашифрованной базой данных, содержащей как сертификат, так и закрытый ключ.
Ответ 2
Обычно есть три директивы:
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
Ответ 3
Обзор криптографии с открытым ключом, включая использование закрытых ключей:
http://en.wikipedia.org/wiki/Public-key_cryptography#How_it_works
И подробная разбивка всех шагов, используемых в TLS, протокол, используемый вашим сервером для трафика https, который показывает, где именно используется закрытый ключ: