openssl でサーバ証明書もろもろ
先日 GlobalSign で証明書を取得したところ、x509 と PKCS7 の両方の形式で証明書が送られてきて、 x509 の場合はさらに中間証明書をこのウェブページから探してねと書かれていて、 どれがどれやらよくわからず探すのが面倒だった。
openssl を使って、PKCS7 → x509 変換をすることができる。 変換した方が中間証明書を探す手間もかからないし、選択ミスも起こらない。
なお、 CertificateChainFile が無くなったのは Apache-2.4.8 からで、2.4.6 以下の場合は 2.2系と同じ設定方法になる。
2.4系からはx509に羅列だ、と思ってると CentOS-7.2 標準のApacheが 2.4.6 だったりしてハマる。
PKCS7 → x509 変換
Apache-2.4.8 以降は、CertificateChainFile ディレクティブがなくなったので、
CertificateFile に x509 形式で、サーバ証明書→中間証明書(→ルート証明書) の順で記述した証明書を指定するようになった。
ルート証明はなくていいけど。
手で書いていってもいいのだけど、opensslを使って PKCS7 → x509 変換もできる。
BEGIN ~ END の間にゴミが入るのでそれは手動で消す必要があることに注意。
openssl pkcs7 -outform pem \ -in www.example.com.pkcs7 \ -out www.example.com.pem -print_certs
内容確認系
x509
openssl x509 -in www.example.com.pem -text | less
PKCS7
openssl pkcs7 -in www.example.com.pkcs7 -print_certs -text | less
web経由で証明書確認
openssl s_client -connect www.example.com:443 -showcerts