opensslコマンドラインを使用してcacertfileのすべてのエントリを抽出するには?

opensslコマンドラインを使用してcacertfileのすべてのエントリを抽出するには?

cacertfile(/etc/ssl/certs/ca-certificates.crtなどの複数の証明書を含むファイル)からすべての証明書プリンシパルを抽出できるopensslコマンドはありますか?

私はそれを試しましたが、openssl x509 -in /etc/ssl/certs/ca-certificates.crt -noout -subject最初の証明書のトピックだけを提供します。

答え1

CA ファイルのすべてのトピックを印刷するには、次の手順を実行します。

openssl crl2pkcs7 -nocrl -certfile ca-certificates.crt | openssl pkcs7 -print_certs -text -noout | grep 'Subject:'

答え2

残念ながら、私はOpenSSLがこれを行うことができると信じていません。 OpenSSL は、各ファイルに x509 ジョブの証明書があると仮定します。

~によるとこのウェブサイト別のファイルに分割する必要があります。彼も提案するPerlスクリプトこれにより分割されます。その後、これらのファイルを繰り返すか、Perlスクリプトを変更してテーマを直接抽出できます。

答え3

ファイルを指すように変数を設定し、fileopensslコマンドを変更します。

file="your file name"; first=""; for i in $(grep -n CERT "${file}" | cut -f 1 -d:)
do
    if [ -z "$first" ]
    then
        first=$i
        continue
    fi
    sed -n "$first,${i}p" "${file}" | openssl x509 -noout -subject
    first=""
done

関連情報