使用 `openssl` 显示 PEM 文件的所有证书

使用 `openssl` 显示 PEM 文件的所有证书

我可以使用以下命令来显示 PEM 文件中的证书:

openssl x509 -in cert.pem -noout -text

但它只会显示第一个证书的信息。 PEM 文件还可能包含证书链。如何显示所有包含的证书?

答案1

openssl命令(特别是其openssl x509子命令等)对其数据流很礼貌:一旦读取数据,就不会读取超出其需要的数据。

这允许链接多个openssl命令,如下所示:

while openssl x509 -noout -text; do :; done < cert-bundle.pem

这将显示文件中的所有捆绑证书cert-bundle.pem(并以错误结束:当没有更多可用输入时,但这只是为了显示它是如何工作的)。

答案2

似乎 PEM 格式对于多个证书的处理不太好。基于这个答案

openssl crl2pkcs7 -nocrl -certfile cert.pem | openssl pkcs7 -print_certs -text -noout

它首先转换为 pkcs7 然后显示它

答案3

或者,您可以这样做:

awk -F'\n' '
BEGIN { showcert = "openssl x509 -noout -text" }
/-----BEGIN CERTIFICATE-----/ {printf "%d: ", i}
{printf $0"\n" | showcert}
/-----END CERTIFICATE-----/ {close(showcert) i++}' cert.pem

答案4

openssl pkcs12 -in cert.p12 -cacerts -nodes -nokeys > rootcert.pem

另外,您可以尝试使用 KeyStore Explorer

相关内容