複数の証明書が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