「Server Name Indication」の版間の差分
(ページの作成:「Server Name Indication (SNI, サーバネーム インディケーション)とは、SSL/TLSの拡張仕様です。SSLのハンドシェイクを行うとき...」) |
|||
行1: | 行1: | ||
− | [[Server Name Indication]] (SNI, サーバネーム インディケーション)とは、[[SSL]]/[[TLS]]の拡張仕様です。SSLのハンドシェイクを行うときに、クライアントは、アクセスするホスト名を通知し、サーバ側はホスト名によって、[[証明書]]を使い分けします。 | + | [[Server Name Indication]] (SNI, サーバネーム インディケーション)とは、[[SSL]]/[[TLS]]の拡張仕様です。SSLのハンドシェイクを行うときに、クライアントは、アクセスするホスト名を通知し、サーバ側はホスト名によって、[[SSLサーバ証明書|証明書]]を使い分けします。 |
'''読み方''' | '''読み方''' | ||
行6: | 行6: | ||
== 概要 == | == 概要 == | ||
− | [[Server Name Indication]] | + | [[Server Name Indication]](SNI)では、複数の[[SSLサーバ証明書|証明書]]を使い分けることができます。 |
+ | SNIでは、あとから[[SSLサーバ証明書|証明書]]を追加することで、異なるドメイン名の[[HTTPS]]のウェブサイトを追加できます。 | ||
== マルチドメインのウェブサーバ == | == マルチドメインのウェブサーバ == | ||
− | HTTP では、名前ベースのバーチャルホストが利用可能です。 | + | これは、SNIの話ではありません。 |
+ | |||
+ | [[HTTP]] では、名前ベースのバーチャルホストが利用可能です。 | ||
+ | |||
+ | しかしながら、[[HTTPS]]の場合は、名前ベースのバーチャルホストを利用できません。[[TLS]]プロトコルのハンドシェイクは、アプリケーション層(HTTP)の通信の前に完了されます。TLSプロトコルの段階では、接続先のホスト名を知ることはできませんでした。HTTPヘッダのホストフィールドを見るまで、どのホスト名に対してアクセスしているかわかりません。 | ||
+ | |||
+ | この問題を解決するために、[[HTTPS]]の[[ウェブサーバ]]は、ホスト名ごとに異なるグローバルIPアドレスを利用していました。[[IPアドレス]]ごとに[[SSLサーバ証明書|証明書]]を設定します。それがIPベースのバーチャルホストになります。 | ||
== 複数ドメインをサポートするSSL証明書 == | == 複数ドメインをサポートするSSL証明書 == | ||
複数のホスト名(ドメイン)をサポートする方法として | 複数のホスト名(ドメイン)をサポートする方法として | ||
− | * | + | * ワイルドカード[[SSLサーバ証明書|証明書]] |
* SANs(Subject Alternative Names) | * SANs(Subject Alternative Names) | ||
があります。 | があります。 | ||
− | + | しかしながら、上記の方法は、[[SSLサーバ証明書|証明書]]を発行するときに、未来に使うことになるドメインを予期して、入れておくことは事実上不可能です。 | |
+ | == SNIを導入するとどうなるのか? == | ||
+ | [[Server Name Indication]](SNI)は、[[TLS]]のハンドシェイクを改良することにより、[[HTTPS]]の[[ウェブサーバ]]でも複数の[[SSLサーバ証明書|証明書]]が利用可能になります。 | ||
+ | |||
+ | # クライアントは、[[TLS]]ハンドシェイクの段階で、接続するドメイン名(ホスト名)を通知します。 | ||
+ | #: ドメイン名の通知は、[[平文]]の通信になります。 | ||
+ | # サーバは、対応するドメイン名(ホスト名)の[[SSLサーバ証明書|証明書]]を選択します。 | ||
+ | |||
+ | つまり、1つの[[IPアドレス]]で複数のドメインの[[HTTPS]]のサーバが提供できます。 | ||
+ | == 対応状況 == | ||
+ | 2015年の時点では、たいていのソフトウェアは対応していると考えられます。かなり古いソフトウェアは、SNIに対応していません。 | ||
+ | == まとめ == | ||
+ | * [[SSLサーバ証明書|証明書]]を追加することで、異なるドメイン名の[[HTTPS]]のウェブサイトを後から追加できます。 | ||
+ | * グローバルIPアドレスが1つだけで、複数の[[HTTPS]]のウェブサイトを運営できます。 | ||
== 関連項目 == | == 関連項目 == | ||
* [[TLS]] | * [[TLS]] | ||
+ | * [[SSLサーバ証明書|証明書]] | ||
<!-- vim: filetype=mediawiki | <!-- vim: filetype=mediawiki | ||
--> | --> |
2015年9月11日 (金) 22:53時点における版
Server Name Indication (SNI, サーバネーム インディケーション)とは、SSL/TLSの拡張仕様です。SSLのハンドシェイクを行うときに、クライアントは、アクセスするホスト名を通知し、サーバ側はホスト名によって、証明書を使い分けします。
読み方
- Server Name Indication
- さーばねーむ いんでぃけーしょん
概要
Server Name Indication(SNI)では、複数の証明書を使い分けることができます。
SNIでは、あとから証明書を追加することで、異なるドメイン名のHTTPSのウェブサイトを追加できます。
マルチドメインのウェブサーバ
これは、SNIの話ではありません。
HTTP では、名前ベースのバーチャルホストが利用可能です。
しかしながら、HTTPSの場合は、名前ベースのバーチャルホストを利用できません。TLSプロトコルのハンドシェイクは、アプリケーション層(HTTP)の通信の前に完了されます。TLSプロトコルの段階では、接続先のホスト名を知ることはできませんでした。HTTPヘッダのホストフィールドを見るまで、どのホスト名に対してアクセスしているかわかりません。
この問題を解決するために、HTTPSのウェブサーバは、ホスト名ごとに異なるグローバルIPアドレスを利用していました。IPアドレスごとに証明書を設定します。それがIPベースのバーチャルホストになります。
複数ドメインをサポートするSSL証明書
複数のホスト名(ドメイン)をサポートする方法として
- ワイルドカード証明書
- SANs(Subject Alternative Names)
があります。 しかしながら、上記の方法は、証明書を発行するときに、未来に使うことになるドメインを予期して、入れておくことは事実上不可能です。
SNIを導入するとどうなるのか?
Server Name Indication(SNI)は、TLSのハンドシェイクを改良することにより、HTTPSのウェブサーバでも複数の証明書が利用可能になります。
つまり、1つのIPアドレスで複数のドメインのHTTPSのサーバが提供できます。
対応状況
2015年の時点では、たいていのソフトウェアは対応していると考えられます。かなり古いソフトウェアは、SNIに対応していません。