Обычно с виртуальным хостом ssl настраивается со следующими директивами:
Listen 443
SSLCertificateFile /home/web/certs/domain1.public.crt
SSLCertificateKeyFile /home/web/certs/domain1.private.key
SSLCertificateChainFile /home/web/certs/domain1.intermediate.crt
В чем разница между SSLCertificateFile
и SSLCertificateChainFile
? Клиент приобрел ключ CA у GoDaddy. Похоже, GoDaddy предоставляет только SSLCertificateFile
(файл .crt) и SSLCertificateKeyFile (файл .key), а не в SSLCertificateChainFile
.
Будет ли мой ssl работать без SSLCertificateChainFile
путь указан?
Кроме того, существует ли канонический путь для размещения этих файлов?
Строго говоря, вам никогда не понадобится цепочка для работы SSL.
Что ты всегда необходимость является SSLCertificateFile
с SSLCertificateKeyFile
содержащий правильный ключ для этого сертификата.
Проблема в том, что если все, что вы даете Apache, - это сертификат, то все, что он должен дать подключающимся клиентам, - это сертификат, который не рассказывает всей истории об этом сертификате SSL. Он говорит: «Я подписан кем-то, но я не собираюсь рассказывать вам о них».
Обычно это работает нормально, так как большинство клиентских систем имеют большой запас сертификатов ЦС (как корневых, так и промежуточных), которые он может проверить на соответствие отношения подписи, чтобы установить доверие. Однако иногда это не срабатывает; чаще всего проблема, с которой вы столкнетесь, - это клиент, у которого нет сертификата для промежуточного ЦС, подписавшего ваш сертификат.
Вот где вступает в игру цепочка; он позволяет Apache точно показать клиенту, как выглядят доверительные отношения, что может помочь клиенту заполнить пробелы между вашим сертификатом, корнем, которому он доверяет, и промежуточным звеном, о котором они не знают. Цепочку можно включить в вашу конфигурацию одним из двух способов:
SSLCertificateFile
, на новых строках после сертификата сервера по порядку (корень должен быть внизу). Если вы настроите это так, вы захотите SSLCertificateChainFile
указал на тот же файл, что и SSLCertificateFile
.SSLCertificateChainFile
директива; сертификат ЦС, выдавший сертификат сервера, должен быть первым в файле, а затем все остальные в корневом каталоге.Проверьте файл сертификата, который у вас есть - я уверен, что в нем нет данных цепочки. Что обычно работает нормально, но в конечном итоге вызывает проблемы с тем или иным браузером.
Вот довольно хорошее объяснение различий, а также наблюдаемых влияний между выбором одного и другого:
На самом деле GoDaddy дает вам промежуточную цепочку:
http://support.godaddy.com/help/5238
Вот еще обсуждение.
http://support.godaddy.com/help/868/what-is-an-intermediate-certificate
В электронном письме от GoDaddy о том, как загрузить новый сертификат, также будет информация о промежуточном файле сертификата. Это где-то ближе к низу, возможно, после того, как ваши глаза потускнели от многословия и дополнительных продаж.
Что касается того, что произойдет, если вы не включите правильную директиву SSLCertificateChainFile: вы увидите большое красное предупреждение в своем браузере, потому что ваш сайт SSL не будет проверяться в браузерах, поскольку они не могут следовать цепочке сертификатов с вашего сайта. сертификат на сертификат, принадлежащий центру сертификации, о котором знает браузер.
Я хотел бы добавить к предыдущим хорошим ответам о SSLCertificateChainFile, что порядок сертификатов в этом файле тоже важен. Клиенты на основе OpenSSL сами сортируют порядок, но клиенты на основе gnutls не смогут выполнить цепочку с неправильным порядком.
Проверьте заказ с помощью gnutls-cli, например
gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p https wwwsec.cs.uu.nl
где /etc/ssl/certs/ca-certificates.crt - это место, в которое ваш дистрибутив помещает комбинированные сертификаты.