3
我在tls.Config
中使用ClientCAs
和ClientAuth
選項在我的Go HTTP應用程序中執行基於證書的客戶端身份驗證。是否可以驗證提供的CRL的客戶端證書?我在x509
包中看到有一些圍繞CRL的功能,但我不確定如何配置HTTP服務器來使用它們(即似乎沒有任何選項可能導致CRL也成爲tls.Config
用過的)。如何在Golang中驗證客戶端證書是否符合CRL?
我在tls.Config
中使用ClientCAs
和ClientAuth
選項在我的Go HTTP應用程序中執行基於證書的客戶端身份驗證。是否可以驗證提供的CRL的客戶端證書?我在x509
包中看到有一些圍繞CRL的功能,但我不確定如何配置HTTP服務器來使用它們(即似乎沒有任何選項可能導致CRL也成爲tls.Config
用過的)。如何在Golang中驗證客戶端證書是否符合CRL?
是否有可能也驗證了針對提供CRL的客戶端證書?
是的,可以通過crypto/x509
包中提供的功能(正如您在問題中正確說明的那樣)提供的功能。但是,crypto/tls.Config
(由net/http
消耗)等更高級別的接口不提供此功能。對CRL實施檢查的好機會可能是檢查net/http.Request.TLS.PeerCertificates
。
有點背景:crypto/tls
is maintained by security expert Adam Langley誰有opinion on revocation checking(原始來源是his blog)。雖然我沒有證據,但可以認爲這是一個故意的設計決定。
謝謝@flowlo,我會深入探討您建議的PeerCertificates選項。至於Adam在CRL上的帖子,我從客戶端角度得到他的評論。當使用證書進行服務器端身份驗證時,CRL仍然至關重要。 – Bryan
手動驗證對等證書看起來是一種有效的方法。只需要在服務器調用堆棧中作爲中間件來完成。爲了將來的參考,https://github.com/cloudflare/cfssl/blob/master/revoke/revoke.go上的代碼提供了一些很好的例子,說明如何將對等證書與CRL進行實際比較。 – Bryan