我可以使用以下命令来显示 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