最近仕事でSSL暗号化/証明書がらみの質問がよくきます。情報漏洩等、インターネット上のセキュリティ問題が大きくとりあげられる中、システム構築要件でもやはりSSLでの暗号化/認証が必須になっているケースが多いようです。
今日話題にあがったのは「ワイルドカード証明書」。通常の証明書であればコモンネーム(CN:多くの場合FQDN)につき1枚の証明書が必要となりますが、ワイルドカード証明書では、指定されたドメイン名に属している同じ階層すべてのサブドメインに対して使用することができます。
たとえば、”www1.example.com”、”www2.exmaple.com”、”www3.example.com”という3つのコモンネームがあった場合、通常の証明書であれば3枚の証明書が必要なところを”*.example.com”と指定されたワイルドカード証明書であれば1枚で済んでしまう、というわけです。(ただし、もう1つ下の階層のサブドメインに対応していないようです。たとえば、"www1.sub.example.com"に対応したワイルドカード証明書は”*.example.com”ではなく”*.sub.example.com”で取得する必要があります)
もちろん証明機関によって詳細は異なりますが、あるサイトでは「コモンネームが3つ以上になる場合、大幅なコストメリットが得られる」という情報がありました。もちろん使う側にとっては重要なことですが、エンジニアの立場として気にしなくてはいけないこと、それは「通常の証明書としくみ上どんな違いがあるのか」です。
で、いくつか調べてみました。
証明書の形式としてはいたって単純で、コモンネームの部分が”*.example.com”というようにワイルドカード(アスタリスク)を含んだ形式になるだけで、特に大きな違いはなさそうです。CSRを発行する際も違いはそれだけのようです。問題は、クライアント/サーバそれぞれが対応できるかどうか、です。
サーバ側ですが、当然Apache(OpenSSL)やIISといったメジャーなWebサーバであれば問題はなさそうです。一部、アスタリスクありのCSRを発行できない仕様の製品もあるようですが、その場合にはOpenSSLの環境があればそこでCSRを生成し、証明書が取得できたら製品にインポートすればいい、というように問題は少なそうです。
一方、クライアントの場合ですが、PCであればIEにしてもFireFoxにしても問題はないようですが、携帯端末だとまだ対応が十分ではなさそうです。「対応していない」と明記している証明機関もあります。今後は携帯端末でも対応も進むとは思いますが、現状ではPCクライアントに限定できる場合でないと導入は厳しそうですね。
ちなみに、証明機関で最もメジャーであるベリサイン社ではワイルドカード証明書は発行していないようです。そういえばベリサインさんの場合、他社さんが「ロードバランスやDNSラウンドロビンの環境ではサーバが複数台でも1つのライセンスでいいですよ」といっても、あくまで「サーバの台数分の証明書が必要」と強気です。
まあバランシング環境の場合、技術的なしくみ上は証明書は1枚で済んでしまうはずなのですが、このへんは紳士協定ですかね。
(もちろん、実績だったり対応している端末の多さは圧倒的にベリサインさんが多いです。特に金融機関で導入されているEV SSL証明書についてはほとんどすべてベリサインのようです)
ワイルドカード証明書が必要になるケースとしては、IISやApacheで仮想ホスト(VirtualHost)を提供しているときのようです。
HTTPSの処理上、当然のことながらSSLで証明書の提示、鍵交換等したあとで暗号化されたHTTPデータのやりとりがはじまります。つまり、仮想ホスト環境で1台のサーバが処理すべきURL候補が複数ある場合、クライアントが求めるURLが確定する前に証明書を送らなくてはいけません。当然、正しい証明書を送れないケースもあります。
この場合、ワイルドカード証明書を使えば、ドメインおよび階層がいっしょであれば同じ証明書を使える、というわけです。
ワイルドカード以外のソリューションとしては、最近のSSL(TLS)の仕様でRFC3546(Transport Layer Security (TLS) Extensions )を使う方法もあります。この場合、SSLのClientHello(クライアントが最初に投げるパケット)に要求ホスト名情報をのせられるので、サーバ側が正しい証明書を選択できます。
ただこちら、WindowsクライアントだとVista以降のようですね。今はまだXP使っている人も多いでしょうから、不特定多数の方を対象にしたサービスで使用するのは難しそうです。
(参考サイト
http://www.toritonssl.com/service/wildcard.html
http://rs.impressrd.jp/e/2009/07/08/485
https://jp.globalsign.com/support/index.php?action=artikel&cat=8&id=178&artlang=ja
http://rs.impressrd.jp/e/2009/07/08/485
http://www.twsvc.com/support/before-order/faq-wccert-mobile-1055
http://jp.globalsign.com/service/ssl/option/wildcard.html
http://blogs.msdn.com/osamum/archive/2009/10/19/iis-ssl.aspx
http://slashdot.jp/~witch/journal/408486
http://internet.watch.impress.co.jp/cda/news/2005/10/28/9674.html
http://jp.globalsign.com/service/ssl/option/wildcard.html
http://www.ietf.org/rfc/rfc3546.txt
など
)
この記事が気に入りましたら、また、お役に立ちましたら、以下のアイコンをクリックしていただけると嬉しいです(^^)