SSL/TLSの拡張仕様の1つであるSNI(Server Name Indication)に注目が集まっています。
これまでは「1台のサーバ(グローバルIPアドレス)につきSSL証明書は1ドメイン」でしたが、SNIを利用すれば、「1台のサーバで異なる証明書」を使い分けることができるようになります。
それでは、SNIの利用方法やその必要性について確認していきましょう。
SNI(Server Name Indication)とは何だろう?
SSL/TLSでは「同じサーバ(同じグローバルIPアドレスを利用する複数のユーザ)は1つのSSLサーバ証明書しか使えない」のが基本です。そのため、このままだと不便な場合もあります。
たとえばレンタルサーバサービスを例として考えると、「同じサーバを複数のユーザが利用し、なおかつユーザごとに異なるドメインを利用する」という場合もあるでしょう(名前ベースバーチャルホストと言います)。
しかし、先述のように基本的なSSL/TLS仕様では、SSLサーバ証明書は同じIPアドレスにつき1ドメインしか運用できません。
レンタルサーバを利用するそれぞれのユーザが独自ドメインを取得している場合でも、SSLページだけはサーバ全体の共有アドレスとなります。この場合、事情を知らない訪問者から見て「突然、別のサイトに飛ばされた?」という違和感が生じるかもしれないのです。
名前ベースバーチャルホストとは?
既に簡単に触れましたが、「名前ベースバーチャルホスト」には、「1つのグローバルIPアドレスを用意すれば、複数ドメインのサイトを1つのサーバで運用することができる」というメリットがあります。
名前ベースバーチャルホストの仕組みを簡単に説明すると、クライアントがサーバにアクセスする際にはHTTPのHostヘッダを利用して、アクセスしたいドメイン名を送信します。
サーバは受信したHostヘッダの内容にもとづいて指定されたドメインにアクセスし、コンテンツをクライアントに返す、という流れを採用しています。
名前ベースバーチャルホストには、
- 1つのサーバにつき1つのグローバルIPアドレスを用意すればいいこと
- ドメインを追加する場合、サーバソフトの設定変更をするだけで済むこと
- 費用が安価で済むこと
などがあります。
名前ベースバーチャルホストでHTTPS通信ができない理由
HTTP通信における認証や暗号化のために重要な技術とされるHTTPS(HTTP over SSL)通信。名前を直訳すると「SSLの上でHTTP通信を行う」ということになります。
流れとしては「SSL ハンドシェイク(クライアントとサーバの間でSSLのセッションを生成する過程)」が行われ、確立されたSSLセッションの上でHTTP通信が行われます。
クライアントがSSLハンドシェイクを行った場合、同じグローバルIPアドレスを持つサーバは、同じSSLサーバ証明書をクライアントに返すことになります。
たとえ別のドメイン名を使用していたとしても、グローバルIPアドレスが同じサーバは、同じSSLサーバ証明書を返すことしかできません。
そのため、先の項目で触れたように「ユーザが独自ドメインを取得しているにも関わらず、SSL ページだけはサーバ全体の共有アドレスとなる」という問題が起こってしまうのです。
SNIのメリット・デメリット
SNIの導入による直接的なメリットは「ユーザが取得した独自ドメイン名と、SSLサーバ証明書のドメイン名が同じになる」ということです。
SNIを利用すると、クライアントはSSLハンドシェイクの際に「これから通信したいサーバのドメイン名」をサーバに通知するようになります。サーバは「どのドメインに対応するSSLサーバ証明書を利用すべきか」を判断することができるのです。
一方、現段階でもっとも気になるデメリットとして、SNIを利用するにはSNIに対応するブラウザが必要ということが挙げられます。
たとえばInternet Explorerの場合は「7」以降、Opera は「8.0」以降などで、まだこれらのブラウザを導入していない閲覧者もいると考えられますので、配慮が必要です。
常時SSL化の流れとSNIの果たす大きな役割
検索エンジンGoogleは2014年8月7日、「HTTPSをランキングシグナルに使用します」と発表しました。これからは、HTTPSで運営しているサイトが検索結果の面でも優遇されることになります。
このことを受けて、Webサイトのごく一部、たとえばショッピングカートやフォームなどに限って導入していたSSLを、今後はWebサイト全体に広げ、Webサイト全体をHTTPS化する「常時SSL」の手法を採用するケースが増えると考えられます。
常時SSL採用のメリットは、閲覧者のセッションの初めから終わりまでの全てを暗号化、保護することができるため、閲覧者のCookieの盗聴を防止し、安全・安心の提供が可能となる点です。
現在でも、TwitterやFacebookなどのSNSで常時SSLは採用されています。利用者のCookieが盗聴されると、第三者による不正ログイン、なりすましによる記事の投稿、ユーザ情報の変更などが行われてしまう可能性があります。
ログインページだけではなく、全てのページがSSL化されていなければ、Cookieを盗聴される可能性があるため、SNSでは常時SSL化が行われているのです。
まとめ
ユーザのセキュリティへの関心が高まるにつれ、今後はSSLに対する需要はさらに増えていくと考えられます。
暗号化に特化したドメイン認証型のSSLサーバ証明書を無償で提供する事業者(CloudFlare)や
団体(Internet Security Research Group:2015年夏以降)などが増えつつあるのもこのような背景があります。
そして先に触れたように、HTTPSで運営されるページが検索ランキングで優遇されるというメリットが出てくるため、1つのグローバルIPアドレスで1つのSSLサーバ証明書しか利用できない状況が続けば、IPアドレスの枯渇が懸念されます。
このような状況を踏まえて、1台のサーバ(IPアドレス)で複数ドメインのSSLサーバ証明書を運用でき、IPアドレスの節約が可能なSNIを利用したいと考えるユーザは、今後ますます増えていくでしょう。
関連リンク