如果我仅使用证书(带有链)和私钥发出openssl调用,服务器就会拒绝握手中的客户端证书。
如果我还设置cafile参数并将其指向与证书相同的文件,则此问题将消失。
即使信息已经在cert输入中,如果没有cafile输入,openssl似乎也无法构建链。我想知道你们是否有经验。我觉得有点奇怪。
总而言之,这可行:
sudo openssl s_client -connect <ip>:<port> -cert cert_with_chain.pem -key privkey.pem -CAfile cert_with_chain.pem
这不起作用(服务器拒绝了“空证书链”):
sudo openssl s_client -connect <ip>:<port> -cert cert_with_chain.pem -key privkey.pem
打开SSL版本:
OpenSSL 1.0.2k-fips 26 Jan 2017
答案 0 :(得分:2)
问题不是“ openssl 不能在没有cafile的情况下构建链” ,但这并不是一开始的初衷。预期的行为在man s_client中有详细记录:
-cert证书名
(如果服务器请求使用)证书。-CAfile文件
包含受信任证书的文件,该证书将在服务器身份验证期间使用,并在尝试构建客户端时使用 证书链。