SNI(Server Name Indication)に注目が集まっている。
SNIがどんなものかと言いますと、今まではひとつのサーバ(グローバルIPアドレス)につき、ひとつのSSL証明書だったのに、SNIを使えばひとつのサーバでSSL証明書を使い分けることができるようになります。
googleがSSLを推奨して、今後はSSL対応が標準化になるのではないか、という風潮の中、SNIの技術は今後より注目されてくると思います。SNIを実装すれば、マルチドメイン対応しているサーバで主ホスト以外のドメイン、サブドメインに対してもSSL証明書を発行することができるようになります。
具体的にどんなメリットがあるかというと、レンタルサーバの場合、共有SSLといったSSLでしか対応ができなかったのに、SNIを使用することで、共有SSLではない、SSL証明書が発行できるのです。クライアントのサーバが共有レンタルサーバでSSL化の対応をしたいという要望があったとしても、共有SSLでしか対応できなかったのが、独自SSLで対応できるようになったのです。常時SSL化が注目されている中で、SNIは主流になってくるSSLと言えるでしょう。
メリット
・ドメインに対し、証明書を発行できる。
・ひとつのサーバに複数の証明書を発行できる。
・レンタルサーバでもドメイン証明書を発行できる。
・マルチドメイン、ワイルドカード証明書よりも安価で実装できる。
デメリット
・windows7以前のwindowsOSなどのレガシィブラウザでは使用できない。
以上になります。
では、どのように実装をしているのかを説明します。
SSLは①クライアントとサーバの間でSSLのセッションを生成する (SSLハンドシェイク)②確立されたSSLセッション上でHTTP通信をする という手順で行われます。
本来、サーバは自身に設定されたSSLサーバ証明書しか返せません。ドメイン毎ではないのです。メインとなるホストドメインでしかSSLセッションを確立できません。
SNIを使うことで、クライアントとサーバの間でSSLのセッションを生成するタイミングでサーバ名を通知するようになります。これによって、サーバはアクセス毎にどのSSL証明書を使えばいいのかを判断できるようになり、ドメイン毎のSSL証明書を発行できるようになったのです。
SNIのでメリットは通常のSSLより少し手間がかかるのと古いブラウザは対応していないということだけです。今後、サーバにSSLを導入する場合はマルチドメイン、ワイルドカードを検討する前に、SNIを検討してみてはどうでしょうか。
次回はVPSにSNIを対応する方法について書きたいと思います。