Apache-2.2
客戶端證書(Apache、Linux、OpenSSL)
我的公司從供應商處購買了萬用字元證書。此證書已使用 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/
祝你好運!