我想验证证书是否由子 CA 颁发。我使用以下命令:
openssl verify -verbose -CAfile "/usr/share/jenkins/sub-ca.crt" cert.crt
cert.crt 在这种情况下是自签名证书,因此它不是由子 ca.crt 颁发的。 sub-ca.crt是我们的root-ca颁发的证书。 当我运行该命令时,它显示正确的错误:
error 18 at 0 depth lookup:self signed certificate
但是在这一行下面 好的 显示,当我用 $? 检查返回代码时我得到 0 作为返回码。 为什么发生错误时命令返回 OK?
最佳答案
verify
命令尝试建立证书链,验证链是否完整,检查目的,检查信任设置,检查整个链的有效性(例如,针对时间等)等
由于verify
是一个诊断工具,它的返回代码并不意味着证书已成功验证,而是意味着该命令成功运行完成,没有任何 fatal error 。某些类别的错误被视为非 fatal error ,例如:自签名证书、证书过期、处理证书扩展时出错等。非 fatal error 仍将显示,但不会影响最终的“OK”结果。
关于openssl - 在 Bash 中验证 PEM 证书有错误,但返回代码正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40740653/