Моя компания приобрела групповой сертификат у поставщика. Этот сертификат был успешно настроен с Apache 2.2 для защиты поддомена. На стороне SSL все работает.
Теперь мне необходимо сгенерировать клиентские сертификаты x509 для выпуска для этого поддомена. Я слежу за этой страницей: (http://www.vanemery.com/Linux/Apache/apache-SSL.html), начиная с «Создание клиентских сертификатов для аутентификации».
Я создал файлы p12 и успешно импортировал их в Firefox. Когда я сейчас захожу на сайт, я получаю сообщение об ошибке в FireFox: «Соединение с сервером было сброшено во время загрузки страницы».
Я думаю, что моя проблема в том, что я неправильно подписываю клиентскую сторону. Когда я подписываю сертификат на стороне клиента, я использую файл PEM (RapidSSL_CA_bundle.pem) от RapidSSL (у которого мы купили сертификат) в качестве аргумента -CA. В качестве аргумента -CAkey я использую закрытый ключ сервера. Это верно?
Возможно, вы используете клиентские сертификаты с неправильным использованием ключей. Убедитесь, что у вашего ключа есть:
Если вы используете расширенное использование ключа, проверьте
На стороне сервера убедитесь, что у вас есть весь сертификат CA, который использовался для подписи сертификата клиента, и настроена соответствующая иерархия pki. В типичной настройке apache это будет выглядеть так:
<VirtualHost *:443>
ServerAdmin admin@example.net
DocumentRoot /var/www/
ServerName service.example.net
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory "/var/www/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
</Directory>
SSLEngine on
SSLOptions +StdEnvVars
SSLCertificateFile /usr/local/ssl/certs/Server.crt
SSLCertificateKeyFile /usr/local/ssl/private/Server.key
SSLCACertificateFile /usr/local/ssl/certs/caRoot.cacert.pem
SSLVerifyClient require
ErrorLog logs/service.example.net-443-error_log
LogLevel info
CustomLog logs/service.example.net-443-access.log combined
Наконец, вы можете попробовать отладку с помощью старого доброго openssl
openssl s_client -connect server.example.net:443 -CAfile ../ca/caRoot.crt -cert client-Access.crt -key client-Access.key -showcerts
или завить
curl -kv --key client-Access.key --cert client-Access.crt --cacert ../ca/caRoot.crt https://server.example.net/
Удачи!