openssl verify和s_client命令之间的差异

时间:2015-01-21 16:22:29

标签: linux ubuntu openssl x509certificate

使用OpenSSL 1.0.1l在Ubuntu 14.04上运行:

 openssl s_client -CApath /etc/ssl/certs -showcerts -connect www.google.com:443

返回:

Verify return code: 0 (ok)

然而,运行:

openssl verify -CApath /etc/ssl/certs/ google_chain.pem

其中google_chain.pem是上面s_client命令的输出,返回:

google_chain.pem: C = US, ST = California, L = Mountain View, O = Google Inc, CN = google.com
error 20 at 0 depth lookup:unable to get local issuer certificate

有人可以解释这种差异吗?在我看来,openssl verify命令只是忽略-CApath参数。

1 个答案:

答案 0 :(得分:3)

openssl verify并不期望证书包含其链。需要使用-untrusted参数传递链。您可以在那里传递相同的文件,仍然可以通过在-CAfile/-CApath中找到受信任的根来确定信任。

openssl verify -CApath /etc/ssl/certs -untrusted google_chain.pem google_chain.pem