用于身份验证的商业 SSL 证书和自签名证书

用于身份验证的商业 SSL 证书和自签名证书

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

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

<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

答案1

您可能正在使用已将 tis 重新协商解决方法移植到其中的 Apache 发行版。一个快速的尝试是添加指令SSLInsecureRenegotiation off。如果不起作用,请将您的SSLVerifyClient指令更改为Optional

这将使服务器面临该目录位置的 TLS 重新协商漏洞,但在 Debian 更新其发行版(或您自定义编译自己的发行版)之前,您对此无能为力。

相关内容