Apache-2.2

用於身份驗證的商業 SSL 證書和自簽名證書

  • September 29, 2011

我有一個執行商業 (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

您可能正在使用已將 tis 重新協商解決方法反向移植到其中的 apache 發行版。快速嘗試的一件事是添加SSLInsecureRenegotiation off指令。如果這不起作用,請將您的SSLVerifyClient指令更改為Optional.

這會將伺服器打開到該目錄位置的 TLS Renegotiation 漏洞,但在 Debian 更新其發行版(或者您自定義編譯自己的發行版)之前,您無能為力。

引用自:https://serverfault.com/questions/316057