我有以下证书链:
自签名证书 --> 中间 --> 客户端证书,服务器证书。我有 SSL 通信应用程序,也验证了对等设置。我尝试使用openssl s_client
命令测试此链,然后得到Verify return code: 19 (self signed certificate in certificate chain)
。服务器在握手中发送整个链。
我尝试使用包含自签名和中间证书的 Bundle.pem 以及 Self-signed.pem 进行测试,但结果相同。
openssl s_client -msg -connect localhost:1500 -CAfile Self-signed.pem/Bundle.pem -cert Client.crt -key Client.key
然后我颁发了另一个中间证书,并从该证书颁发了新的服务器证书
openssl s_client -msg -connect localhost:1500 -CAfile Bundle2.pem -cert Client.crt -key Client.key
Bundle2.pem 包含第二个中间证书和自签名证书,这很好用。此外,服务器现在不会发送整个证书链,这是应用程序的设计方式。
有人能解释一下为什么这是个问题吗,为什么如果服务器和客户端有相同的中间证书我就无法成功验证?
答案1
basicConstraints=CA:TRUE
通过在颁发时添加openssl.conf
到中级证书来解决这个问题