複数の証明書が1つのファイルに結合されている場合に証明書内容を表示したい

「openssl x509 -in filename -text」コマンドで証明書内容を表示できるが、複数の証明書が1ファイルにまとまっている場合、OpenSSLでは1つ目の証明書しか表示してくれないようだ。

証明書を1つ1つファイルに分割すれば良いが‥手間だ。 mac OS X のOpenSSLのCA証明書はBASE64の証明書の連結で中身がわからない‥ 何か方法はないかと調べていると、素晴らしいスクリプトがあった!

Certificate Management with OpenSSL - General Stuff

#!/usr/bin/perl # script for splitting multi-cert input into individual certs # Artistic Licence # # v0.0.1 Nick Burch <nick@tirian.magd.ox.ac.uk> # v0.0.2 Tom Yates <tyates@gatekeeper.ltd.uk> # $filename = shift; unless($filename) { die("You must specify a cert file.\n"); } open INP, "<$filename" or die("Unable to load \"$filename\"\n"); $thisfile = ""; while(<INP>) { $thisfile .= $_; if($_ =~ /^\-+END(\s\w+)?\sCERTIFICATE\-+$/) { print "Found a complete certificate:\n"; print `echo "$thisfile" | openssl x509 -noout -text`; $thisfile = ""; } } close INP;

実行権限を与え、引数にファイル名を指定して証明書内容が表示できた。

./certdump.pl /usr/local/etc/openssl/cert.pem