Ssl
Apache 客戶端證書身份驗證
如何配置 Apache 2(在 Ubuntu 10.04 上)以使用客戶端證書身份驗證,其中我的域 (secure.somedomain.com) 由第三方受信任的 SSL 證書保護,並且客戶端證書由我自己的 CA 頒發?
當我嘗試使用第 3 方受信任的 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 conf 文件:
<VirtualHost *:443> ServerAdmin webmaster@somedomain.com 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
任何建議將不勝感激。我可以找到很多關於使用自己的自簽名證書的教程,但沒有第 3 方受信任根的範例。我不希望我的使用者收到安全警告。
他們應該能夠訪問我的站點,它應該提供有效的受信任的第 3 方頒發的證書,並從客戶端請求由我的 CA 簽名的證書。
我決定從一個乾淨的伺服器開始。我遇到的錯誤實際上是由於瀏覽器還沒有客戶端證書;因此,它顯示了晦澀的錯誤消息。
<VirtualHost _default_:443> ServerAdmin webmaster@somedomain.com 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
有時您需要在 apache2.conf 中添加 SSLCertificateChainFile 選項。
例如,我們將 SureServer 用於我們的 SSL 證書。有時瀏覽器不包含 SSL 證書的完整樹並且需要提供缺失的部分:
SSLEngine On SSLCertificateFile ... SSLCertificateKeyFile ... SSLCertificateChainFile /etc/apache2/sureserverEDU.pem
所以你可能需要在那裡添加你的 3rd 方 CA。
如果我沒記錯的話,rapidSSL 有一個鏈文件(RapidSSL_CA_bundle.pem)