技術日記
SSLで名前ベースのバーチャルホストEdit

Apacheのドキュメントの名前ベースのバーチャルホストの項に、

名前ベースのバーチャルホストは SSL プロトコルの特徴により、 SSL セキュアサーバには使えません。

とか書いてあるんで、SSLでは名前ベースのバーチャルホストは一切使えないものだと思いこんでいたんだけど、(証明書の確認がテキトーでいいテスト環境用ならば)SSL+名前ベースのバーチャルホストも使えるという話を聞いて試しに設定してみたところ、ちゃんと動いた。

今までテスト・開発環境で、1IPで複数のSSLサーバーを立てられないと信じて、いろいろ面倒くさいことをやってきたんだけど、それらはすべて徒労だったのか……。

いや、やっぱりなんかおかしい

NameVirtualHostを*:443で有効にして、https://foo/https://bar/にアクセスを振り分けることに成功はしているんだけど、サーバー側の環境変数を見てみたら、SERVER_PORTが443ではなく80になっているし、HTTPSもonになってないなー。でもブラウザの方はSSL接続の鍵マーク付きでアクセスしているっぽいんだけど。どういうことだ?

VirtualHostのなかでSetEnv HTTPS onしてごまかし

テストしているアプリケーションが、同一ホスト名+パスで、必要に応じてHTTP→HTTPS、HTTPS→HTTPへリダイレクトするようになっていて、その識別にHTTPS/HTTP_X_SSLを見ていたんだけど、テスト環境だと識別できる環境変数が見あたらなくなってしまったんで、VirtualHostの中でSetEnv HTTPS onとか強引につけて識別できるようにした。けど、なんか根本的なところから間違っている気がするな。まあテストには使えるんだけど。

Published At2007-02-22 00:00Updated At2019-12-31 00:02