Apacheの設定を変更し、単一IPアドレス上で複数のSSLサイトを運用する
Apacheのバージョン2.2.12以降では、SNI(Server Name Indication)という、SSLプロトコルに対する拡張機能がサポートされているため、名前ベースのHTTPサイトを設定する場合と同じように名前ベースのHTTPSサイトを設定することが可能になっている。本記事では、Apacheのこの機能について紹介する。
Apache Webサーバがバージョンアップし、成熟していくに伴い、新機能の追加やバグの修正が行われてきている。そして、バージョン2.2.12で追加された機能のうち、最も重要なものはおそらく、単一IPアドレス上で複数のSSLサイトを運用できるようにするという、長らく持ち望まれていた機能だろう。
これまでは、特定のIPアドレスに対してSSL対応のWebサイトを割り当てた場合、そのサイト1つしかSSL対応のWebサイトを運用することができなかった。つまり、IPアドレスが2つあるのであれば、運用できるSSL対応Webサイトの数も2つまでとなるわけである。このことは今までに多くの嘆きとイライラを引き起こしてきていた。
IPアドレスが2つある場合、通常のHTTPサイトであれば双方の、あるいは一方のIPアドレスに複数のサイトを割り当てることができるものの、HTTPSサイトはそれぞれのIPアドレスに1つずつしか割り当てることができない。さらに苛立たしいことに、www.example1.comとwww.example2.comを同一のIPアドレスに割り当てた場合、example1.comにHTTPSサイトが存在していると、https://www.example2.com/にアクセスしてもhttps://www.example1.com/にアクセスしたことになってしまう。つまり、混乱を生み出すことなくHTTPSサイトを運用したいという場合、単一のIPアドレスにはサイト(HTTPサイトかHTTPSサイトかにかかわらず)を1つしか割り当てられなかったわけである。
しかし、Apacheのバージョン2.2.12以降ではSNIという、SSLプロトコルに対する拡張機能がサポートされるようになったため、その状況は一変した。これによって名前ベースのHTTPサイトを設定する場合と同じように、名前ベースのHTTPSサイトを設定できるようになったのである。つまり、5つのSSLサイトを運用する必要があっても、用意するIPアドレスは1つだけでよくなるというわけだ(もちろん、Apacheのバージョン2.2.12以降を使用するという条件はある)。
とは言うものの、以下の条件を満たしている必要がある。
- 当然のことであるが、Apacheのバージョンは2.2.12以降でなければならない。
- また、OpenSSLのバージョンは0.9.8f以降でなければならず、TLS拡張オプションを指定した状態でビルドされていなければならない。
- さらに、ApacheはOpenSSLの上記のバージョンを用いてビルドされていなければならない。ApacheはOpenSSLの適切なバージョン(TLS拡張サポートを含んだバージョンのOpenSSL)を検出すると、SNIのサポートを有効化するようになっている。
ただし、SNIはすべてのブラウザがサポートしているわけではない。とは言うものの、現在一般的になっているほとんどのブラウザはサポートしている。また、かなり以前からサポートしているブラウザもある。例を挙げると、Firefox 2.0以降やOpera 8.0以降、Internet Explorer 7.0以降(残念なことに、Vistaで動作するもののみである)、Google Chrome、Safari 3.2.1(残念なことに、Mac OS X 10.5.6以降で動作するもののみである)がある。
- コメント(1件)
- ホワイトペーパー


とは言うものの実際には文章は二転三転しておらず、一貫しておりとても役立ちました。
特に、名前ベースのSSL対応のブラウザのリスト一覧は、実状が分かり易かったです。
IE6が対応していないのです。アクセスログを見ると未だに10%前後のIEからのアクセスがあるという記事を見た事があります。とは言うものの、これは時間が解決してくれると思います。WindowsVistaや7など、いづれXP以降のOSに移行する人が多いでしょうし、それ以外のOSを使う人も増えるでしょう。とは言うものの、将来的には問題なくても今すぐWebサイトに導入してしまうと、その10%前後の方達のアクセスの可否が少し不安になります。
とは言うものの・・・とは言うものの・・・とはいうものの・・・トハイウモノノ・・・