http://www.rapid-ssl.jp/
SSLサーバ証明書は自分で設定したいと思っていたが、以前は値段が高くてなかなか手が出せなかったものだ。ところが最近は1年で数千円とかめちゃくちゃ安く、とりあえず遊ぶ程度でも十分に手が届く。しかも審査の内容は本当にSSL証明書を申請する人が、ドメインを持っているか、という審査のみ。自前でドメインを登録している人ならお手軽だ。
そこで、お手軽SSL認証局のひとつである RapidSSL でちょっと遊んでみた。以下は Debian Squeeze で実行している。
まずは認証局への署名要求(CSR) を生成する。そのための秘密鍵(server.key)を生成する
RapidSSL は2048bit以上の秘密鍵を要求するため、最後のオプションでその値を指定している。
$ openssl genrsa -des3 -out server.key 2048
次に秘密鍵をもとに署名要求(CSR) を生成する。
$ openssl req -new -key server.key -out server.csr
ここで注意すべきなのは、CSRを生成するにあたって入力する情報は、SSL設定を行うドメインの管理情報と基本的に一致させておかなければならないということだ。つまり、ドメインの whois 情報と一致するようにすること、ということだ。少なくとも以下の情報は一致させておく必要がある。
Country Name
State or Province Name (full name)
Locality Name (eg, city)
Organization Name (eg, company)
また、SSLを設定したい FQDN を Common Name に指定し、Email Address にはドメインの登録者 Emailアドレスを設定すればよい。
Emailアドレス は他にも指定できるが、多分これが一番やりやすい。「a challenge password」や「An optional company name」は空にしておく。
whois情報を隠すサービスってのが最近はあって、レジストラの情報でwhois情報が置き換わっているドメインが存在するが、そういうサービスは外した上で正しい情報を登録した方がよい。
----
CSR を生成したら、
申し込みフォームから上記で生成したCSRを貼り付けて必要事項を記入してSubmitすると、CSR生成時に指定した Emailアドレス に「【重要】 SSLサーバ証明書発行承認のお願い」というメールが送られてくる。そのURLをクリックすると、以下のようなドメイン証明画面がブラウザで開く。
ここで「承認します」ボタンを押せば、RapidSSL から サーバ証明書と中間証明書が送られてくる。これだけで手続き完了。15分くらいしかかかっていない。whois情報さえちゃんとしていればお手軽だということがわかる。
----
あとはサーバ証明書と中間証明書をサーバにインストールするだけだ。Apache + mod_ssl なら一般的な手順は以下の通りとなる。
https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&actp=CROSSLINK&id=SO6252
要するに、Apache の SSL 設定に以下を設定するだけだ。
SSLCertificateFile -> 発行されたサーバ証明書
SSLCertificateKeyFile -> opensslコマンドで一番はじめに作った秘密鍵
SSLCertificateChainFile -> 発行された中間証明書
あとは、Debian 特有の注意点がある。デフォルトでインストールされる SSLサイトの設定ファイル /etc/apache2/sites-available/default-ssl だが、これをそのまま使うと 「Invalid method in request \x16\x03\x01」というエラーが出てSSLリクエストを受け付けてくれなかった。これについては多数の事例が報告されていて、バーチャルホストの設定が _default_:443 だとまずいらしい。自分はこの部分をIPアドレスまたはワイルドカードに置き換えるとうまくSSLリクエストを受け付けてくれるようになった。
[ Update January 17th 2013 11:09 by mumumu ]
サーバの秘密鍵(server.key)を作成したときにパスフレーズを設定するが、これを解除しておかないとサーバを再起動した時にパスフレーズを聞かれて処理が止まってしまう。パスフレーズを解除するには、以下のコマンドを使う
openssl rsa -in server.key -out server.key
複数証明書がある場合は、Apache の
SSLPassPhraseDialog 設定を使うのも手かもしれない。