5

证书我使用OpenSSL的v0.9.8r,我试图运行此命令(与CA文件名称为目录中的cacert.pem中,我正在运行)Openssl的的s_client.First不验证0.9.8r

openssl s_client -CAfile cacert.pem -CApath ./ -connect mail.google.com:443

和验证失败如下

Verify return code: 20 (unable to get local issuer certificate)

然而,当我试图在旧版本的OpenSSL即0.9.8e - FIPS的RHEL5它成功按预期的一个相同的命令。我在这里错过了什么吗?我将不胜感激任何帮助,因为我一直在坚持openssl问题一段时间。提前致谢。

问候

哈日

+0

这是不是你的描述很清楚。你升级了OpenSSL吗?或者安装不同的版本?您是否切换了tot v0.8.8r后是否移动/重命名了任何证书文件或文件夹?什么OS? – jveazey 2011-08-09 01:34:54

回答

2

从OpenSSL的Verify页面

20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY:无法获取本地 颁发者证书

的颁发者证书找不到:这种情况发生时,如果不可信证书的发行人 证书不能找到。

正如你所猜测的,这意味着CA未能加载或验证。这可能是由许多原因造成的,但这里有一个很好的清单。

  • 权限。在Linux上试试sudo。在Windows上尝试“以管理员身份运行”。
  • 尝试在两个版本中使用verify命令,看看是否得到相同的错误。

    openssl verify -CAfile cacert.pem -CApath ./

  • 丢失/放错位置的文件。自运行以来,该文件夹中的某些内容可能已更改。

  • 路径。尝试从当您从OpenSSL 0.9.8e-fips-rhel5运行命令时所在的同一目录运行命令。
0

这一个是更接近比功能中的错误,但它是一个功能,因此只要我们记录它;-)

c_rehash /etc/ssl/certs