2017-03-15 92 views
0

我正在創建一個網站(與OpenResty,但我不認爲是相關的),它只接受客戶端證書驗證的HTTPS連接。我遵循http://www.integralist.co.uk/posts/clientcertauth.html來生成我自己的證書頒發機構,證書籤名請求和CRT。然後我測試了一下,當我去到一個URL與Python谷歌瀏覽器使用證書的網站

certName = "mycert" 
cert = (certName + ".crt", certName + ".key") 
response = requests.get(url, params=urlencode(payload), cert=cert, verify=False, stream=True) 

現在我的網絡服務器正確地接受這個CRT,我試圖訪問來自谷歌Chrome相同的URL。我使用設置 - > HTTPS/SSL - >管理證書 - >導入導入我的CRT文件。但是,每當我轉到URL時,我總是收到400個錯誤請求 - 沒有發送所需的SSL證書。通過查看nginx錯誤日誌,我確認「客戶端沒有發送所需的SSL證書」

如何讓Chrome瀏覽器使用特定URL的證書?

+0

對於客戶端身份驗證您所需要的證書和私鑰(在一個的CertStore條目)。該網頁傷害了我的眼睛,但它看起來像你使用openssl;如果是這樣,你可以使用openssl將私鑰和證書鏈合併到pkcs12(又名PFX)中,並將其導入Chrome使用的Windows商店中,請參閱http://stackoverflow.com/questions/808669/convert-a-cert- pem-certificate-to-a-pfx-certificate或http://stackoverflow.com/questions/553149/is-it-possible-to-convert-an-ssl-certificate-from-a-key-file-to- a-pfx –

+0

請注意,這並不表示Chrome會將其用於「特定網址」;它將用於任何請求在此證書中使用CA名稱的證書的服務器。由於您顯然設置了自己的CA,可能只有您控制的服務器纔會使用該CA名稱申請證書。 –

回答

0

這裏有幾件事要解決。

  1. 您是否已將CA證書安裝在相應的CA存儲中?
  2. 您將需要導入客戶端證書以及當前用戶存儲中的私鑰。文件擴展名是.pfx。您目前正在收到400錯誤,因爲瀏覽器認爲它沒有任何客戶端證書可以使用。
  3. 您不能指定chrome將特定的證書用於特定的URL。

參見上TLS相互驗證是如何工作的我這篇文章:https://blogs.msdn.microsoft.com/kaushal/2015/05/27/client-certificate-authentication-part-1/