Windows Server(IIS)で使っていたSSL証明書を、Apacheに移し変える作業が必要になっていましたが、なかなか解決の糸口が見つからず2ヶ月ぐらい経過してしまいました。SSL自体の理屈はシスアドでも個人情報保護士でも必要な知識なので理解はしてますが、実際の設定となると上手くいかないものです。いろいろ調べてみても、どのサイトも説明がまちまちでなかなか理解に苦しみました。ここではメモを書き起こすことで、頭に叩き込むことにしました。
まず、拡張子に惑わされないこと。当たり前ですが、拡張子がファイルの内容を証明できるわけではありません。解説サイトに出てくる拡張子には、pem、key、cer、crtというものがありました。SSLも歴史が古いですから、きちんと取り決めがあると思い込んでいたのが最初の間違いです。
つぎに、必要なファイルの呼び方がまちまちなこと。サーバーにインストールする証明書は、秘密鍵です。外部に洩らすような管理をしてはいけません。この秘密鍵は、ほぼ秘密鍵と呼ばれていますが、サイトによっては証明書とだけ呼ばれていることもあります。(ちなみにこのサイトでは秘密鍵という説明が全然無く、どこかのサイトをパクったものの、バレないように編集したら肝心な事が抜けてしまったのではないでしょうか。)
そして、CSRを元に認証局より発行されるのが公開鍵です。先ほどの秘密鍵と公開鍵が対になって暗号化通信が成立します。この公開鍵はサーバー証明書と呼ばれたり、サーバーID(Verisign)と呼ばれています。SSLの解説では、基本的にこの2つについて説明されています。なので、文章上の知識はここまでが限界です。
そして、今でもよく分かっていないのが中間証明書。CA証明書などと呼ばれています。証明をしてもらうための仲介的な存在らしいです。紹介状とでも言いましょうか。もうちょっと正確に知識を吸収するべきなのでしょう。善処します。
- 秘密鍵
-
このファイル名はおおよそ*.keyとなっています。一部サイトでは*.pemや*.key.pemとされています。秘密鍵かどうかを確認するには、ファイルの内容を確認します。「
-----BEGIN RSA PRIVATE KEY-----
」で始まり、「----END RSA PRIVATE KEY-----
」で終わります。場合によっては「RSA」が無いものもあるようです。「PRIVATE KEY」という文字列があればほぼ間違いないでしょう。
- CSRファイル
-
認証局に認証してもらうために提出するファイルです。秘密鍵を基にした(秘密鍵そのものとある解説サイトもあるけど、秘密鍵を送ると秘密鍵の意味が無いので間違いと思われ)情報と、サーバーの管理者情報から生成されたファイルは、*.csrとなっています。一部サイトでは*.csr.pemやcsr.pemとされています。CSRファイルかどうかを確認するには、ファイルの内容を確認します。「
-----BEGIN CERTIFICATE REQUEST-----
」で始まり、「-----END CERTIFICATE REQUEST-----
」で終わります。もしくは「-----BEGIN NEW CERTIFICATE REQUEST-----
」で始まり、「-----END NEW CERTIFICATE REQUEST-----
」で終わります。「CERTIFICATE REQUEST」という文字列があればほぼ間違いないでしょう。
- 公開鍵
- 認証局より送り返されてくるファイルです。COMODOの場合はサーバ証明書と中間証明書が書庫ファイルになってメールに添付されます。Verisignの場合はメールの本文に挿入されるので、新規にファイルを作成しコピペして保存することになります。このファイルの保存名が*.cerや*.crtといったものから、certificate.txtなど、ファイルの内容を連想するにも困難なものまであります。COMODOの場合は中間証明書が*.ca-bundleでした。ファイルとしては公開鍵なので、内容を確認すると「
-----BEGIN CERTIFICATE-----
」で始まり、「-----END CERTIFICATE-----
」で終わります。公開鍵に関しては見て回ったサイトの中ではどれも一致していました。
- ルート証明書
-
これは認証局を証明するためのファイルです。公的な認証局ではなく、独自に証明する場合はオレオレ証明書などと呼ばれます。基本的にはブラウザに既にインストールされています。ここではオレオレ証明書については説明しません。一部サイトではサーバ証明書とルート証明書が混同して解説されています。このようなサイトもパクっ(以下略)。このファイルは公開鍵なので、上記公開鍵と同じ「
-----BEGIN CERTIFICATE-----
」で始まり、「-----END CERTIFICATE-----
」で終わります。