人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Apache2で、IPアドレス1つで、2つのバーチャルホスト(以下)を運用してるとします。

www.example.com
www.example.org


この状況で、www.example.com のSSL証明書を使ってwww.example.comへのSSLアクセスを正しく処理しつつ、www.example.orgへのSSLアクセスは拒否する(証明書のホスト名が一致しないなどの警告ではなく、ホントに拒否。なんかエラーでもいい)、という設定は可能ですか? 可能ならどう書けばいいですか?


●質問者: sometime-amigo
●カテゴリ:コンピュータ インターネット
✍キーワード:example.com example.org IPアドレス SSL SSL証明書
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● b-wind
●100ポイント ベストアンサー

この状況で、www.example.com のSSL証明書を使ってwww.example.comへのSSLアクセスを正しく処理しつつ、www.example.orgへのSSLアクセスは拒否する(証明書のホスト名が一致しないなどの警告ではなく、ホントに拒否。なんかエラーでもいい)、という設定は可能ですか? 可能ならどう書けばいいですか?

不可能です。これは Apache 等の制約ではなく、SSLの仕組み上実現不可能なためです。


1つのIPアドレスで、ホスト名によってヴァーチャルホストを切り替える仕組みはNAMEベースのヴァーチャルホストと呼ばれます。

バーチャルホストによる複数サイトの同時運用(1/2)


この仕組みは HTTP のリクエストの中に、Host というヘッダ情報があり、これを見ることでウェブサーバーは対応する

ヴァーチャルホストを選択します。

Host は HTTP 1.1 からは必須のヘッダになっていますので、大抵のブラウザならこれで動作します。


しかし、SSLアクセスの場合仕組み上以下の順で動作します。

1.SSL 証明書に寄る暗号化経路の確率

2.HTTP に寄る通信(リクエスト・レスポンス)


つまり、SSL証明書のやりとりを行う段階では要求されている「ホスト名を知る手段がない」ので、

ホスト名によって挙動を変えることは出来無いのです。

ちなみに、Apache の場合、該当IPアドレスに割り当てられたヴァーチャルホストのうち、

最初に定義された物のSSL証明書を無条件で使用します。


以上の理由により、希望される動作を行うにはNAMEベースでは実現不可能で、

IPベースであれば実現可能と言うことになります。

◎質問者からの返答

さっそくの回答、ありがとうございます。

そんな気はしてました^^;

> Apache の場合、該当IPアドレスに割り当てられたヴァーチャルホストのうち、

最初に定義された物のSSL証明書を無条件で使用します

これが紛らわしいです・・・。

挙動からはどうもそうではないかと思いつつ、

そうはっきり書いてくれてる情報源があんまりないようですし。


おかげですっきりしました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ