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验证失败?
答案 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
选项。
我希望这会有所帮助。