発行されたSSL証明書の内容
サーバSSL証明書の購入をベンダに申し込み、めでたく発行されたらサーバに挿すわけだが、そもそもベンダに渡したCSRが手違いであったりして、万が一誤った内容の証明書が発行されていた場合、サーバに挿しても動かない(HTTPSアクセス不可、警告表示など)という悲惨な目に合ってしまう。
発行された内容が正しいかどうかをopensslコマンドで確認する方法があるので、是非覚えておきたい。
(正直コマンドをよく忘れてしまうので、このエントリはその備忘目的。)
ハッシュ値の確認
秘密鍵、証明書、CSRの3つは全て同じハッシュ値が取れるようになっている。
これによりCSRをもとに作成された秘密鍵及び証明書が正しくできているかを確認することが出来る。
以下、それぞれのファイルのハッシュ値確認方法。
(ハッシュ値は適当)
秘密鍵のハッシュ確認
$ openssl rsa -noout -modulus -in {private_key} | openssl md5
(stdin)= a1b2c3d45e6f7a8b9c0d1e2f3a4b5c6d
証明書のハッシュ確認
$ openssl x509 -noout -modulus -in {certificate_file} | openssl md5
(stdin)= a1b2c3d45e6f7a8b9c0d1e2f3a4b5c6d
CSRのハッシュ確認
$ openssl req -noout -modulus -in {CSR_file} | openssl md5
(stdin)= a1b2c3d45e6f7a8b9c0d1e2f3a4b5c6d
証明書の期限確認
発行された証明書の期限は申請通りになっているか?
有効期限だけなら以下のコマンドですぐ調べられる。
$ openssl x509 -noout -dates -in {certificate_file}
notBefore=Jul 10 08:59:59 2014 GMT
notAfter=Jul 10 09:00:10 2024 GMT
証明書全内容確認(対象ドメインなど)
最後に証明書の内容全体を確認する方法も。
(出力内容は適当)
$ openssl x509 -text -noout -in {certificate_file}
Certificate:
Data:
Version: 1 (0x0)
Serial Number: 01234567890123456789 (0xabcdef0123456789)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=JP, ST=Tokyo, L=Hogehome-ku, O=hogehoge.com, OU=Ops, CN=hogehoge.com
Validity
Not Before: Jul 10 08:59:59 2014 GMT
Not After: Jul 10 09:00:10 2024 GMT
Subject: C=JP, ST=Tokyo, L=Hogehome-ku, O=hogehoge.com, OU=Ops, CN=hogehoge.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:
・
・
・
00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:
ff:00
Exponent: 65537 (0x10001)
Signature Algorithm: sha1WithRSAEncryption
00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:
・
・
・
00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:00:11:
aa:00:99:bb