Назад | Перейти на главную страницу

Аутентификация сертификата клиента Apache

Как я могу настроить 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