`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を試してみることもできます。

関連情報