ssl - 我如何根据 Golang 中的 CRL 验证客户端证书?

标签 ssl go tls1.2

我在 tls.Config 中使用 ClientCAsClientAuth 选项在我的 Go HTTP 应用程序中执行基于证书的客户端身份验证。是否还可以根据提供的 CRL 验证客户端证书?我在 x509 包中看到一些关于 CRL 的函数,但我不确定如何配置 HTTP 服务器来使用它们(即 中似乎没有任何选项>tls.Config 这将导致 CRL 也被使用)。

最佳答案

Is it possible to also verify the client certs against a provided CRL?

是的,通过 crypto/x509 包中提供的功能,这是可能的(正如您在问题中正确陈述的那样)。然而,更高级别的接口(interface),例如 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 )。尽管我没有证据,但人们可能会认为这是一项经过深思熟虑的设计决定。

关于ssl - 我如何根据 Golang 中的 CRL 验证客户端证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37058322/

相关文章:

java - AsyncHttpClient 不适用于 Android 4.4 Kitkat

ssl - 带有 client.crt 和 client.key 的 https 请求

ssl - Go https 客户端问题 - 远程错误 : tls: handshake failure

node.js - 在 Electron 桌面应用程序中创建 TLS 客户端

tomcat - 无法使用 key 、证书和 CA 证书链长度 : 1 为 Tomcat 创建 keystore

laravel - Nginx - 将非 ssl 和非 www 重定向到 ssl 和 www

string - golang - 如何对字符串或 [] 字节进行排序?

go - 有人可以向我解释一下这种 go​​lang 数据竞赛行为吗?

go - 来自 xx.xx.xx.xx :14333: EOF 的 TLS 握手错误

python - 这是 Post 请求问题还是 SSL 验证问题