韓国で、政府が指定した有害なWebサイトへの接続が全面的にブロックされた。有害なサイトにはアダルトサイトなどが含まれている。そのブロックに利用されているのが「Server Name Indication(SNI)」という技術だ。

 韓国メディアの報道によると、韓国国内のインターネットサービス事業者(ISP)は、韓国政府の要請を受け、2019年2月11日からSNIを利用してWebサイトのブロックを始めたという。この方法で、約800のWebサイトに対する接続をブロックしたとされている。

 SNIとはどのような技術なのだろうか。

バーチャルホストをTLSに対応させる

 Webサイトへのアクセスを暗号化する技術としては、Transport Layer Security(TLS)という技術が広く使われている。Secure Sockets Layer(SSL)の後継技術で、いまだにTLSをSSLと呼ぶこともある。Webサイトのすべてのページに暗号通信を適用する常時TLS(常時SSL)も着々と進んでいる。

 SNIは、このTLSの拡張機能である。ホスティングサービス(レンタルサーバーサービス)などでTLSを適用すると不都合が生じるのを解決するために生まれた。

 HTTP/1.1では、同じIPアドレスを複数のドメインで共有できる「バーチャルホスト」という機能が導入された。Webブラウザーなどが送るHTTPリクエストの中に、アクセスしたいドメイン(正確にはホスト)の名前を含ませることで、同じIPアドレスで違うWebサーバーにアクセスできるようにする仕組みだ。

 1つのIPアドレスで様々なWebサイトにアクセスできるようになるので、IPアドレスの消費を抑えることができる。ホスティングサービスなどで広く使われている機能だ。

 ところが、バーチャルホストを利用しているWebサーバーにTLSを適用しようとすると問題が発生する。本来はドメインごとのサーバー証明書を使うべきなのにもかかわらず、共通のサーバー証明書しか使えなくなってしまうのだ。その理由を知るために、まずはSNIを利用しない場合を考えよう。

SNIを利用しない場合
[画像のクリックで拡大表示]

 ユーザーがWebブラウザーにURLを打ち込むと、WebブラウザーはDNSサーバーにアクセスして、URLに含まれるドメイン名に対応するIPアドレスを取得する。このIPアドレスを使ってWebサーバーにアクセスする。

この先は有料会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら