Apache 客户端证书认证

Apache 客户端证书认证

如何配置 Apache 2(在 Ubuntu 10.04 上)以使用客户端证书身份验证,其中我的域(secure.somedomain.com)由第三方受信任的 SSL 证书保护,并且客户端证书由我自己的 CA 颁发?

当我尝试使用第三方受信任的 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 [email protected]
    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

任何建议都将不胜感激。我可以找到很多关于使用自签名证书的教程,但没有第三方受信任根的示例。我不想给我的用户一个安全警告。

他们应该能够访问我的网站,它应该出示有效的受信任的第三方颁发的证书,并向客户端请求由我的 CA 签名的证书。

答案1

有时您需要在 apache2.conf 中添加 SSLCertificateChainFile 选项。

例如,我们使用 SureServer 来处理 SSL 证书。有时浏览器不包含 SSL 证书的完整树,您需要提供缺失的部分:

SSLEngine On
SSLCertificateFile ...
SSLCertificateKeyFile ...
SSLCertificateChainFile /etc/apache2/sureserverEDU.pem

因此您可能需要在那里添加第三方 CA。

如果我没记错的话 rapidSSL 有一个链文件 (RapidSSL_CA_bundle.pem)

答案2

我决定从一台干净的服务器开始。我遇到的错误实际上是由于浏览器还没有客户端证书;因此它显示了模糊的错误消息。

<VirtualHost _default_:443>
    ServerAdmin [email protected]
    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

相关内容