ネームベースのヴァーチャルホストで SSL/TLS を実現する場合,
- ワイルドカード証明書
- subjectAltNameの使用
- SNI (RFC3546)
と方法があるのはご存知の方も多いかと.
で,ワイルドカード証明書は以前,自分のオレオレ CA で発行して,自分のサーバで試してましたが (コレで運用してた),今度は subjectAltName で試してみようって事で試してみました.
出来て当たり前の事なので,目新しいことは何もありません.(^_^;)
openssl を使いますが,CSR の発行は普通通りやりました (ここで-extensions オプションを用いて,あらかじめ設定ファイルで指定してあったextension の内容を含めることも可能かも.未確認).
普通は extension の値を openssl の設定ファイルにセクションとして書いておいて,"-extensions" オプションで,そのセクションを指定して,証明書に記述する内容を決めますが,今回は外部ファイルに出してみました.
basicConstraints = CA:FALSE keyUsage = digitalSignature, keyEncipherment extendedKeyUsage = serverAuth subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always subjectAltName = DNS:tara.harp.gr.jp
というファイルを用意します.ここで書く内容については,
http://www.openssl.org/docs/apps/x509v3_config.html を参照.で Subject Alternative Name については,"DNS" のキーワードを指定して,その後にネームベースの VirtualHost の対象としたいホスト名を書きます.
Subject Alternative Name で指定出来るモノについては,RFC3280の4.2.1.7に記述があります (ここでは定義の dNSName を使用ということです).
# openssl ca -config /path/to/config -in csr.pem -out cert.pem -extfile /path/to/extfile
という風に指定します.
これで
# openssl x509 -noout -text -in cert.pem : (snip) Subject: C=JP, ST=Kyoto, O=Ireland Circle, CN=athlone.harp.gr.jp : (snip) X509v3 Subject Alternative Name: DNS:tara.harp.gr.jp
という証明書が発行出来ました.
Firefox と IE6 で tara.harp.gr.jp に接続して試してみましたが,どちらでも問題なく接続出来ました (オレオレなので CA に対する警告は出たけど).