У меня есть хост apache 2, работающий с коммерческим (quickssl) подписанным сертификатом, и мне нужно сгенерировать клиентские сертификаты для аутентификации.
Я создал ЦС (согласно http://www.cafesoft.com/products/cams/ps/docs30/admin/ConfiguringApache2ForSSLTLSMutualAuthentication.html ) и соответствующим образом изменил мой файл конфигурации apache.
<VirtualHost *:443>
Servername SITEtest.XXX.com
DocumentRoot /SITE/html
CustomLog /SITE/html.log vhost_combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/comercialcert.cer
SSLCertificateChainFile /etc/apache2/ssl/comercialcert.int
SSLCertificateKeyFile /etc/apache2/ssl/comercialcert.key
<Directory /SITE>
AllowOverride All
SSLRequireSSL
SSLCACertificateFile /etc/apache2/ssl/selfsignedcaCA.crt
SSLVerifyClient require
SSLVerifyDepth 1
SSLOptions +StrictRequire +StdEnvVars +ExportCertData +FakeBasicAuth
</Directory>
</VirtualHost>
Я импортировал в браузер файл pkcs12, созданный с помощью того же центра сертификации. Каждый раз, когда я пытаюсь получить доступ, я получаю сообщение об ошибке «Не удалось выполнить повторное согласование: не принято клиентом !?» в журнале ошибок apache.
Все работает нормально, если я использую сертификат, сгенерированный моим центром сертификации, в SSLCertificateFile, но это работает не так, как задумано, поскольку браузер распознает сертификат веб-сервера как самоподписанный.
Дальнейшие подробности:
Apache / 2.2.9 (Debian Lenny) mod_ssl / 2.2.9 OpenSSL / 0.9.8g
Возможно, вы используете дистрибутив apache, в который были перенесены обходные пути повторного согласования. Один быстрый способ попробовать - добавить SSLInsecureRenegotiation off
директива. Если это не сработает, измените свой SSLVerifyClient
директива к Optional
.
Это откроет сервер для уязвимостей повторного согласования TLS для этого местоположения каталога, но вы мало что сможете с этим поделать, пока Debian не обновит свой дистрибутив (или вы не скомпилируете свой собственный дистрибутив).