商业SSL证书和自签名authentication证书

我有一个apache 2主机与商业(rapidssl)签署的证书运行,我需要生成客户端证书进行身份validation。

我创build了一个CA(根据http://www.cafesoft.com/products/cams/ps/docs30/admin/ConfiguringApache2ForSSLTLSMutualAuthentication.html )并相应地修改了我的apacheconfiguration文件。

<VirtualHost *:443> Servername SITEtest.XXX.com DocumentRoot /SITE/html CustomLog /SITE/html.log vhost_combined SSLEngine on SSLCertificateFile /etc/apache2/ssl/comercialcert.cer SSLCertificateChainFile /etc/apache2/ssl/comercialcert.int SSLCertificateKeyFile /etc/apache2/ssl/comercialcert.key <Directory /SITE> AllowOverride All SSLRequireSSL SSLCACertificateFile /etc/apache2/ssl/selfsignedcaCA.crt SSLVerifyClient require SSLVerifyDepth 1 SSLOptions +StrictRequire +StdEnvVars +ExportCertData +FakeBasicAuth </Directory> </VirtualHost> 

我用相同的CA导入了一个pkcs12文件到我的浏览器。 每当我尝试访问我得到的错误“重新谈判握手失败:不被客户端接受!? 在Apache错误日志。

如果我在SSLCertificateFile中使用由我的CA生成的证书,但没有按预期工作,浏览器将Web服务器证书识别为自签名,则一切正常。

更多细节:

Apache / 2.2.9(Debian Lenny)mod_ssl / 2.2.9 OpenSSL / 0.9.8g

你可能正在使用一个已经把这个重新协商解决方法回传给它的apache发行版。 一个快速的尝试是添加SSLInsecureRenegotiation off指令。 如果这不起作用,请将您的SSLVerifyClient指令更改为Optional

这将打开服务器,直到该目录位置的TLS重新协商漏洞,但是直到Debian更新其发行版(或者您自定义编译自己的发行版)才能做到这一点。