SSL証明書のKEYファイル・CSRファイル・CRTファイルのチェック方法

SSL証明書の発行プロセスでは、KEYファイルとCSRファイルを作ることになります。また、証明書会社からはCRTファイルが送られてきます。これらが正しいかどうかをチェックする方法を紹介します。

KEYファイルとは

KEYファイルというのが正式名称だとは思えませんが、ここではSSL通信に利用する公開鍵暗号系の秘密鍵ファイルを指します(おそらく公開鍵情報も含んでいるんだと思いますが、このあたりはよくわかっていません)。

秘密鍵ファイルは次のようなヘッダ・フッタを利用します。

-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----

下記のようにすれば、KEYファイルが正しいかどうか確認できます。

$ openssl rsa -in ssl_example_jp.key -check -noout
verify OK
$

CSRファイルとは

CSRファイルとは、SSL通信に利用する公開鍵暗号系の公開鍵に、コモンネームなどの情報を付加したものです。

これは次のようなヘッダ・フッタを利用します。

-----BEGIN CERTIFICATE REQUEST-----
-----END CERTIFICATE REQUEST-----

下記のようにすれば、CSRファイルが正しいかどうか確認できます。

$ openssl req -in ssl_example_jp.201109.csr -verify -noout
verify OK
$

また、次の手順でコモンネーム(HTTPS通信を行うFQDN)を調べることができます。

$ openssl req -in ssl_example_jp.201109.csr -text -noout | grep -i CN=
        Subject: C=JP, ST=TOKYO, L=Chiyoda-ku, O=Acme Co. Ltd., CN=ssl.example.jp
$

CN=の後ろがコモンネームです。

KEYファイルとCSRファイルそれぞれに含まれる公開鍵が同じかどうかは次のように確認できます。

$ openssl rsa -in ssl_example_jp.key -pubout -out pubkey1.txt
writing RSA key
$ openssl req -in ssl_example_jp.201109.csr -pubkey -noout -out pubkey2.txt
$ diff pubkey1.txt pubkey2.txt
$

ファイルを取り違えたような場合に、これで一定の確認ができます。

CRTファイルとは

CRTファイルとは、SSL証明書会社がCSRファイルに情報を付加して秘密鍵で暗号化したものです。サーバ証明書などとも呼ばれます。

証明書会社の秘密鍵に対応する公開鍵は各ブラウザに内蔵されているため、CSRファイルの内容を安全に送信できるというわけです。

これは次のようなヘッダ・フッタを利用します。

-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

また、次の手順でコモンネームを調べることができます。

$ openssl x509 -in ssl_example_jp.201109.crt -noout -subject
subject= /serialNumber=****/C=JP/O=****/OU=****/OU=****/OU=****/CN=ssl.example.jp
$

一部情報を伏せましたが、CN=の後ろがコモンネームです。

さらに、証明書の有効期限を確認することもできます。

$ openssl x509 -in ssl_example_jp.201109.crt -noout -dates
notBefore=Sep  3 17:53:00 2011 GMT
notAfter=Sep  5 20:09:00 2013 GMT
$

KEYファイルとCRTファイルそれぞれに含まれる公開鍵が同じかどうかは次のように確認できます。

$ openssl rsa -in ssl_example_jp.key -pubout -out pubkey1.txt
writing RSA key
$ openssl x509 -in ssl_example_jp.201109.crt -pubkey -noout > pubkey3.txt
$ diff pubkey[13].txt
$

参考記事