Ssl

Apache 客戶端證書身份驗證

  • July 19, 2011

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

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