Apache-2.2

客戶端證書(Apache、Linux、OpenSSL)

  • March 4, 2011

我的公司從供應商處購買了萬用字元證書。此證書已使用 Apache 2.2 成功配置以保護子域。SSL 方面的一切都有效。

現在我需要生成 x509 客戶端證書來為這個子域頒發。我正在關注此頁面:(http://www.vanemery.com/Linux/Apache/apache-SSL.html),從“為身份驗證創建客戶端證書”開始。

我已經生成了 p12 文件並成功地將它們導入到 Firefox 中。當我現在瀏覽該站點時,我在 FireFox 中收到一條錯誤消息,顯示“在載入頁面時,與伺服器的連接已重置”。

我認為我的問題來自未正確簽署客戶端。當我簽署客戶端證書時,我使用來自 RapidSSL(我們從誰購買證書)的 PEM 文件(RapidSSL_CA_bundle.pem)作為 -CA 參數。對於 -CAkey 參數,我使用伺服器的私鑰。它是否正確?

可能是您使用了錯誤的密鑰用法的客戶端證書。請驗證您的密鑰使用情況是否:

  • 危急
  • 簽約
  • 不可否認性
  • 密鑰加密

如果您使用擴展密鑰用法,請檢查

  • 不重要
  • TLS Web 客戶端身份驗證
  • 電子郵件保護

在伺服器端驗證您是否擁有用於簽署客戶端證書的所有 ca 證書,並且設置了相關的 pki 層次結構。在典型的 apache 設置中,這看起來像:

<VirtualHost *:443>
   ServerAdmin admin@example.net                                                                                      
   DocumentRoot /var/www/
   ServerName service.example.net
   ScriptAlias /cgi-bin/ /var/www/cgi-bin/
   <Directory "/var/www/cgi-bin">
           AllowOverride None
           Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
           Order allow,deny
           Allow from all
   </Directory>

   <Directory "/var/www/">
           Options Indexes MultiViews FollowSymLinks
           AllowOverride None
   </Directory>

   SSLEngine on
   SSLOptions +StdEnvVars
   SSLCertificateFile    /usr/local/ssl/certs/Server.crt
   SSLCertificateKeyFile /usr/local/ssl/private/Server.key
   SSLCACertificateFile  /usr/local/ssl/certs/caRoot.cacert.pem
   SSLVerifyClient require
   ErrorLog logs/service.example.net-443-error_log
   LogLevel info
   CustomLog logs/service.example.net-443-access.log combined

最後,您可以嘗試使用舊的 openssl 進行調試

openssl s_client -connect server.example.net:443 -CAfile ../ca/caRoot.crt -cert client-Access.crt -key client-Access.key  -showcerts

或捲曲

curl -kv --key client-Access.key --cert client-Access.crt --cacert ../ca/caRoot.crt  https://server.example.net/

祝你好運!

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