如果我只使用cert(带链)和私钥发出openssl调用,那么服务器在握手时拒绝客户端证书就会出现问题。
如果我还设置了cafile参数并将其指向与cert相同的文件,则此问题就消失了。
似乎openssl无法在没有cafile输入的情况下构建链,即使信息已经在cert输入中。我想知道你们是否有这方面的经验。我觉得有点奇怪。
总而言之,这有效:
sudo openssl s_client -connect <ip>:<port> -cert cert_with_chain.pem -key privkey.pem -CAfile cert_with_chain.pem
这不起作用(服务器拒绝“null cert chain”):
sudo openssl s_client -connect <ip>:<port> -cert cert_with_chain.pem -key privkey.pem
打开SSL版本:
OpenSSL 1.0.2k-fips 26 Jan 2017
问题不在于“openssl不能在没有咖啡馆的情况下构建连锁店”,而是首先不打算这样做。 man s_client中记录了预期的行为:
-cert certname 要使用的证书(如果服务器请求的证书)。
-CAfile文件 包含在服务器身份验证期间使用的可信证书以及在尝试构建客户端证书链时使用的文件。