Обычно с виртуальным хостом 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), а не at SSLCertificateChainFile
.
Будет ли мой SSL работать без указания SSLCertificateChainFile
пути?
Кроме того, есть ли канонический путь, где эти файлы должны быть размещены?
apache-2.2
ssl
chrisjlee
источник
источник
/etc/ssl
,/usr/local/etc/ssl
или вssl
подкаталоге , специфичного для веб - сайта (например ,/home/www/example.com/data
имеет веб - сайт , тоhome/www/example.com/ssl
имеет сертификаты).Ответы:
Строго говоря, вам никогда не понадобится цепочка для работы SSL.
То, что вам всегда нужно , это
SSLCertificateFile
наличиеSSLCertificateKeyFile
правильного ключа для этого сертификата.Проблема в том, что если все, что вы даете Apache, это сертификат, то все, что он должен дать подключающимся клиентам, - это сертификат, который не рассказывает всей истории об этом SSL-сертификате. Он говорит: «Я подписан кем-то, но я не собираюсь рассказывать вам о них».
Обычно это работает нормально, так как большинство клиентских систем имеют большое хранилище сертификатов CA (как корневых, так и промежуточных), которые могут проверяться на предмет наличия соответствующих отношений подписи для установления доверия. Однако иногда это не работает; чаще всего вы сталкиваетесь с тем, что клиент не имеет сертификата для промежуточного центра сертификации, подписавшего ваш сертификат.
Вот где цепь вступает; это позволяет Apache точно показать клиенту, как выглядят доверительные отношения, что может помочь клиенту заполнить пробелы между вашим сертификатом, корнем, которому они доверяют, и промежуточным звеном, о котором они не знают. Цепочка может быть включена в вашу конфигурацию одним из двух способов:
SSLCertificateFile
, в новых строках после сертификата сервера по порядку (корень должен быть внизу). Если вы настроите его так, вам нужноSSLCertificateChainFile
указать тот же файл, что иSSLCertificateFile
.SSLCertificateChainFile
директиве; сертификат CA, выдавший сертификат сервера, должен быть первым в файле, а затем все остальные в корне.Проверьте файл сертификата, который у вас есть сейчас - держу пари, что в него не включены данные цепочки. Который обычно работает нормально, но в конечном итоге вызовет проблемы с тем или иным браузером.
источник
SSLCertificateChainFile
.SSLCertificateFile
иSSLCertificateChainFile
указывать на один и тот же объединенный файл, который работает - отредактировал мой ответ, чтобы исправить это.Вот довольно хорошее объяснение различий, а также наблюдаемых последствий выбора одного против другого:
https://stackoverflow.com/questions/1899983/difference-between-sslcacertificatefile-and-sslcertificatechainfile
источник
На самом деле, GoDaddy дает вам промежуточную цепочку:
http://support.godaddy.com/help/5238
Вот еще немного обсуждения.
http://support.godaddy.com/help/868/what-is-an-intermediate-certificate
В электронном письме от GoDaddy, в котором рассказывается, как загрузить новый сертификат, также будет содержаться информация о промежуточном файле сертификата. Это где-то ближе к дну, возможно, после того, как ваши глаза застеклены от словоблудия и перепроданности.
С точки зрения того, что произойдет, если вы не включите правильную директиву SSLCertificateChainFile: вы увидите большое красное предупреждение в вашем браузере, потому что ваш сайт SSL не будет проверяться в браузерах, так как они не могут следовать цепочке сертификатов от вашего сайта. cert к одному, принадлежащему центру сертификации, о котором знает браузер.
источник
Я хотел бы добавить к предыдущим хорошим ответам о SSLCertificateChainFile, что также важен порядок сертификатов в этом файле. Клиенты на основе OpenSSL сами разберутся в порядке, но клиенты на основе gnutls потерпят неудачу в цепочке с неправильным порядком.
Проверьте порядок с gnutls-cli, как
где /etc/ssl/certs/ca-certificates.crt - это место, где ваш дистрибутив помещает комбинированные сертификаты.
источник