我如何根据 Golang 中的 CRL 验证客户端证书?
How can I verify client certificates against a CRL in Golang?
我在 tls.Config
中使用 ClientCAs
和 ClientAuth
选项在我的 Go HTTP 应用程序中进行基于证书的客户端身份验证。是否还可以根据提供的 CRL 验证客户端证书?我在 x509
包中看到有一些围绕 CRL 的函数,但我不确定如何配置 HTTP 服务器来使用它们(即 tls.Config
中似乎没有任何选项这会导致 CRL 也被使用)。
Is it possible to also verify the client certs against a provided CRL?
是的,通过 crypto/x509
包中提供的功能(正如您在问题中正确陈述的那样),这是可能的。但是,crypto/tls.Config
(由 net/http
使用)等更高级别的接口不提供该功能。检查 CRL 的一个好机会可能是检查 net/http.Request.TLS.PeerCertificates
.
一些背景知识:crypto/tls
is maintained by security expert Adam Langley who has an opinion on revocation checking (original source is his blog)。虽然我没有证据,但有人可能会认为这是一项故意的设计决定。
我在 tls.Config
中使用 ClientCAs
和 ClientAuth
选项在我的 Go HTTP 应用程序中进行基于证书的客户端身份验证。是否还可以根据提供的 CRL 验证客户端证书?我在 x509
包中看到有一些围绕 CRL 的函数,但我不确定如何配置 HTTP 服务器来使用它们(即 tls.Config
中似乎没有任何选项这会导致 CRL 也被使用)。
Is it possible to also verify the client certs against a provided CRL?
是的,通过 crypto/x509
包中提供的功能(正如您在问题中正确陈述的那样),这是可能的。但是,crypto/tls.Config
(由 net/http
使用)等更高级别的接口不提供该功能。检查 CRL 的一个好机会可能是检查 net/http.Request.TLS.PeerCertificates
.
一些背景知识:crypto/tls
is maintained by security expert Adam Langley who has an opinion on revocation checking (original source is his blog)。虽然我没有证据,但有人可能会认为这是一项故意的设计决定。