0深度查找时的Openssl错误20:无法获取本地发行者证书

时间:2018-11-03 02:16:34

标签: openssl

Root certificate -> Intermediate CA -> Environment CA -> Host Cert

Openssl验证适用于CAfile(具有证书链root + int + env),但不适用于CApath。我必须使用syslog-ng的ca-dir,并且不断收到此错误。

openssl verify -CAfile etc/ssl/test/ca.pem host2.pem
host2.pem: OK

openssl verify -CApath /etc/ssl/test/ host2.pem
host2.pem: CN = host.domain.com
error 20 at 0 depth lookup:unable to get local issuer certificate

尽管主机证书是使用相同的配置生成的,并且使用相同的证书链,但Openssl验证确实可以在其他主机上使用CA路径。为什么CApath验证失败?

1 个答案:

答案 0 :(得分:1)

Openssl 文档中: https://www.openssl.org/docs/manmaster/man1/verify.html

-CApath directory
  

受信任证书的目录。证书应具有   格式名称:hash.0或具有此格式的符号链接   (“哈希”是哈希的证书使用者名称:请参见-hash选项   x509实用程序)。在Unix下,c_rehash脚本将   自动创建指向证书目录的符号链接。

因此,如果我是对的,则-CApath选项应指向带有证书的哈希列表的目录,或指向它们的符号链接。 您可以通过例如获取某种列表使用-hash命令的openssl x509选项。

我希望这会有所帮助。