使用 openssl 验证 x509 证书是否有效并由受信任的 CA 签名

Verify x509 certificate with openssl to be valid and signed by trusted CAs

在 shell 脚本中,我想使用 openssl 验证 x509 证书,以确保它有效并由我的根 CA 之一签名。我试过这个:

openssl verify -CAfile /path/to/CAfile mycert.pem

它有效,但对于自签名证书,我得到输出:

error 18 at 0 depth lookup:self signed certificate
OK

错误已显示,但它以 OK 结尾且状态代码为 0,因此我的脚本中没有出现错误。

我可以解析输出,但这不是安全生产环境的可靠代码。

我需要一个在自签名证书上产生错误的命令。

编辑

% openssl version 
OpenSSL 1.0.2k-fips  26 Jan 2017
% cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.9 (Maipo)

适用于 openssl 1.1.1

使用您的代码、虚拟 CA 和虚拟自签名证书,我无法复制您的结果。请更新您的示例或包含 openssl 版本。

最后一个输出行是 error: mycert.pem: verification failed 并且 return 代码是 2 (echo $?),而不是带有 0 return 代码的 OK 消息。我还收到了您收到的错误 18 自签名消息。我正在使用 openssl 1.1.1i.

错误 18 实际上是一个可靠的错误代码,在 openssl verify 手册页中记录为专门用于自签名证书的代码。