验证Bash中的PEM证书有错误,但返回代码OK

时间:2016-11-22 11:26:46

标签: openssl certificate pem verify

我想验证证书是否由子CA颁发。我使用以下命令:

openssl verify -verbose -CAfile "/usr/share/jenkins/sub-ca.crt" cert.crt

cert.crt在这种情况下是一个自签名证书,因此它不是由sub-ca.crt发布的。 sub-ca.crt是我们的root-ca颁发的证书。 当我运行该命令时,它显示正确的错误:

error 18 at 0 depth lookup:self signed certificate

但是在这条线下     好 显示,当我用$检查返回代码?我得到0作为返回码。 当发生错误时,为什么命令返回OK?

2 个答案:

答案 0 :(得分:2)

verify命令尝试建立证书链,验证链完整,检查目的,检查信任设置,检查整个链的有效性(例如,与时间等),等等。

由于verify是一种诊断工具,它的返回代码并不意味着证书成功验证,这意味着该命令成功运行完成而没有任何致命错误。某些类别的错误被视为非致命错误,例如:自签名证书,证书到期,错误处理证书扩展等。仍然会显示非致命错误,但不会影响最终错误" OK"结果。

答案 1 :(得分:0)

在这种情况下,OpenSSL命令返回的

错误18表示在深度0处找到自签名证书,并且在其内部存储中不存在自签名证书(或者在此命令的情况下,它是没有与-CAfile选项一起提供。)

通常,OpenSSL会尝试形成一系列证书,并且它是基于提供用于验证的证书或证书链以及作为-CAfile或-CAPath选项的一部分提供的证书的发行者。

它期望链中的自签名证书(即链的最顶层证书)也应该作为-CAfile或-CAPath选项的一部分呈现,即它们被验证者信任。

在问题中,情况并非如此,因此也就是错误。

相关问题