如何配置 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