Как я могу настроить Apache 2 (в Ubuntu 10.04) для использования аутентификации сертификата клиента, когда мой домен (secure.somedomain.com) защищен сторонним доверенным SSL-сертификатом, а клиентские сертификаты выдаются моим собственным центром сертификации?
Когда я пытаюсь использовать сторонний доверенный сертификат SSL (/ C = US / O = GeoTrust, Inc. / CN = RapidSSL CA), я получаю ошибки, потому что я думаю, что SSLCACertificateFile конфликтует!?!?
Результат от: $ openssl s_client -state -debug -showcerts -verify 0 -connect secure.somedomain.com
depth=1 /C=US/O=GeoTrust, Inc./CN=RapidSSL CA
verify error:num=20:unable to get local issuer certificate
verify return:0
Мой файл конфигурации apache:
<VirtualHost *:443>
ServerAdmin webmaster@somedomain.com
ServerName secure.somedomain.com
SSLEngine On
SSLCertificateFile /var/websites/ssl/certificate.cer
SSLCertificateKeyFile /var/websites/ssl/key.key
SSLCACertificateFile /var/websites/ssl/intermediate.cer
DocumentRoot /var/websites/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/websites/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
SetHandler mono
DirectoryIndex index.html default.aspx
SSLCACertificateFile /etc/apache2/ownca.pem
SSLVerifyClient require
SSLVerifyDepth 1
</Directory>
LogLevel warn
ErrorLog /var/websites/logs/error_443.log
CustomLog /var/websites/logs/access_443.log combined
ServerSignature On
Любой совет будет очень признателен. Я могу найти множество руководств по использованию собственного самозаверяющего сертификата, но ни одного примера стороннего доверенного корня. Я не хочу предупреждений о безопасности для моих пользователей.
Они должны иметь возможность перейти на мой сайт, он должен предоставить действительный доверенный сертификат, выпущенный третьей стороной, и запросить сертификат у клиента, подписанный моим ЦС.
иногда вам нужно добавить параметр SSLCertificateChainFile в ваш apache2.conf.
Например, мы используем SureServer для наших сертификатов SSL. Иногда браузеры, чтобы не содержать полного дерева для сертификата SSL, а также должны предоставить недостающую часть:
SSLEngine On
SSLCertificateFile ...
SSLCertificateKeyFile ...
SSLCertificateChainFile /etc/apache2/sureserverEDU.pem
Так что вам, вероятно, нужно добавить туда свой сторонний CA.
Если я правильно помню, у RapidSSL есть файл цепочки (RapidSSL_CA_bundle.pem)
Решил начать с чистого сервера. Ошибки, с которыми я столкнулся, на самом деле были связаны с тем, что в браузере еще не было сертификата клиента; и поэтому он отображал непонятные сообщения об ошибках.
<VirtualHost _default_:443>
ServerAdmin webmaster@somedomain.com
ServerName secure.somedomain.com
SSLEngine On
SSLCertificateFile /var/websites/ssl/certificate.crt
SSLCertificateKeyFile /var/websites/ssl/certificate.key
SSLCertificateChainFile /var/websites/ssl/cachain.pem
DocumentRoot /var/websites/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/websites/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
SetHandler mono
DirectoryIndex index.html index.aspx default.aspx
SSLRequireSSL
SSLCACertificateFile /etc/apache2/ownca.pem
SSLVerifyClient require
SSLVerifyDepth 1
SSLOptions +StrictRequire +StdEnvVars +ExportCertData
</Directory>
LogLevel warn
ErrorLog /var/websites/logs/error_443.log
CustomLog /var/websites/logs/access_443.log combined
ServerSignature On