我正在尝试使用go进行TLS客户端身份验证。当我创建一个设置了ExtKeyUsageClientAuth的简单自签名客户端证书时,它工作正常,但是当客户端尝试连接更长的证书链时:
CA - >中间体 - >客户
我收到以下错误:x509: certificate specifies an incompatible key usage
相关电话是
handshake_server.go: processCertsFromClient()
verify.go: checkChainForKeyUsage()
如果我正在阅读代码,我的链中的每个证书都必须具有客户端身份验证扩展密钥集。
我不是x509专家,但这似乎是一个奇怪的要求,我从未见过CA或具有客户端身份验证设置的中间证书。我不认为如何配置一个长期存在的CA来处理所有可能的未来关键用法。
那么错误在哪里?
我可以想到一些可能性