Разница между SSLCACertificateFile и SSLCertificateChainFile

Я предоставляю страницы SSL на своем веб-сервере, и у меня есть вопрос. В чем разница между SSLCACertificateFile и SSLCertificateChainFile?

Когда я использую SSLCertificateChainFile, я получил предупреждения от японского браузера сотового телефона, но когда я пользуюсь браузером ПК (например, IE, FF), проблем не было. С другой стороны, SSLCACertificateFile не вызывал проблем для обоих браузеров.

Есть ли разница, когда браузеры подключаются к apache?

Ответ 1

SSLCertificateChainFile - это, как правило, правильный выбор, поскольку он имеет наименьшее влияние; это приводит к тому, что указанный файл отправляется вместе с сертификатом всем подключаемым клиентам.

SSLCACertificateFile (далее "CACert" ) делает все SSLCertificateChainFile (далее "Цепочка" ) и дополнительно разрешает использование соответствующего сертификата для подписания сертификатов Клиент. Такая проверка подлинности довольно редка (по крайней мере на данный момент), и если вы ее не используете, там IMHO нет причин увеличивать ее функциональность, используя CACert вместо Chain. С другой стороны, можно утверждать, что в дополнительных функциях нет вреда, а CACert охватывает все случаи. Оба аргумента действительны.

Излишне говорить, что если вы спросите продавца сертификата, он всегда будет настаивать на CACert over Chain, поскольку он дает им другое дело (сертификаты клиентов), которое они потенциально могут продать вам по линии.;)

Ответ 2

Собственно, оба варианта могут быть действительными.

Используйте SSLCertificateChainFile для публикации вашего сертификата, подписанного публичным центром сертификации (VeriSign, RapidSSL и т.д.).

Используйте SSLCACertificateFile для предоставления CA 'private', который может выдавать клиентские сертификаты, которые вы можете распространять среди некоторых выбранных пользователей. Эти сертификаты client на самом деле отлично подходят для аутентификации (по сравнению с базовой аутентификацией пароля) и, как правило, не должны распространяться публичным ЦС (следовательно, вы можете сэкономить деньги).

Итак, если вы хотите добавить безопасную авторизацию на какую-то часть своего веб-сайта, сделайте следующее:

<Directory /var/www/html/authorized>
  SSLVerifyClient require
  SSLVerifyDepth  5

  SSLOptions +StrictRequire
  SSLUserName SSL_CLIENT_S_DN_CN
  SSLRequireSSL
</Directory>

Только для краткого объяснения SSLUserName SSL_CLIENT_S_DN_CN будет установлено имя аутентифицированного пользователя для сертификата CommonName, в сравнении с объектом x509 '/OU = Foo/CN =...'.