Apacheでバーチャルホスト機能を利用しております。

この状況で、複数のドメインを1IPしかりようできない環境で管理している場合、
ssl.confで仮に複数のバーチャルホストを設定したとしても、
デフォルト(最初に設定されたバーチャルホスト)が表示されるかと思います。

この場合に、HTTPS経由で異なるドメインでアクセスされた場合に
デフォルトのバーチャルホストを表示させない方法はありますでしょうか?

具体例でいうと、以下の二つのドメインあった場合・・・

① www.example.com
② www.example.net

※①のwww.example.comをhttpd.conf及びssl.confのいずれでもデフォルトとして設定

https://www.example.net/」でアクセスされた場合、
https://www.example.com/」を表示しないようにしたいということです。

ServerNameでしてもデフォルトが表示されてしまうことと、
mod_rewriteで転送をかけるにしても暗号化通信後となる為、
証明書のエラーが表示されてしまう為、
根本的に表示しないようにしたいです。

回答の条件
  • 1人2回まで
  • 登録:2008/09/03 11:39:45
  • 終了:2008/09/10 11:40:02

回答(2件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402008/09/03 18:26:32

ポイント35pt

ServerNameでしてもデフォルトが表示されてしまうことと、

一応 NameVirtualHost aaa.bbb.ccc.ddd:443 とかしとけば、デフォルト以外も表示されます。


ただし、

mod_rewriteで転送をかけるにしても暗号化通信後となる為、

証明書のエラーが表示されてしまう為、

これと同じで、名前ベースの VirtualHost が選択されるのは暗号化通信後です。

という事で、「SSL の原理的に」同一 IP かつ証明書エラーなしで複数の SSL VirtualHost を立てることは不可能なのです。

id:loxia

少し質問の趣旨を誤解されているようです。

私の質問は「1つのIPで複数のSSL::VirtualHostを利用したい」ということではなく、

逆に1つのIPで1つのサーバ証明書しか利用するつもりはないが、

httpd.confで複数のVirtualHostを利用している場合、

そのServerNameでHTTPS通信を行おうとすると、ssl.confで設定された異なるドメインが表示されてしまい

(例では「https://www.example.net」でアクセスした場合「https://www.example.com」が表示される)

そのため、ブラウザ上に不正な証明書を利用していると表示されてしまうので、

異なるドメインの場合httpsでアクセスされても表示しないようにしたいのですが、

その設定方法がわからないのでご存知の方がいればお教えいただきたいという質問です。

2008/09/03 18:55:26
id:poch-7003 No.2

poch-7003回答回数43ベストアンサー獲得回数82008/09/04 23:31:55

ポイント35pt

こんな感じで設定すればいけないですかね?

NameVirtualHost xxx.xxx.xxx.100:443
<VirtualHost xxx.xxx.xxx.100:443>
  ServerName www.example.com:443 
  #ほかの設定
</VirtualHost>

NameVirtualHost xxx.xxx.xxx.200:443
<VirtualHost xxx.xxx.xxx.200:443>
  ServerName www.example.net:443
</VirtualHost>

#なんかこのフォーム異常に入力しにくいのはなぜ??

id:loxia

ご回答ありがとうございます。

ご回答いただいている方法はIPベースのバーチャルホスト設定だと思います。

今回グローバルIPが一つしかなく名前ベースのバーチャルホストを利用している関係上

お教えいただいた方法は利用できません。

2008/09/05 00:33:22
  • id:a_suenami
    回答に書くほどでもないと思うので、コメントで失礼します。

    ssl.confに複数のバーチャルホストがあることが前提なのですか?
    ssl.confからwww.example.comのバーチャルホスト設定を削除すればいいだけだと思うのですが…

    証明書のコモンネームはwww.example.comでいいんですよね?
  • id:b-wind
    > 異なるドメインの場合httpsでアクセスされても表示しないようにしたいのですが、
    それでエラーを出なくするのに、それぞれのSSL証明書を使わないとだめなんですよ。
    繰り返しますがドメインの判定は暗号化後、つまりSSL証明書をクライアントに送付してからです。

    > (例では「https://www.example.net」でアクセスした場合「https://www.example.com」が表示される)
    それは設定がおかしい。
    証明書が一致しないことを除けば、HTTPS でも VirtualHost は分けて立てられる。
    実際テスト用とかでやってるし。
  • id:loxia
    コメントありがとうございます。

    a_suenami様

    >ssl.confに複数のバーチャルホストがあることが前提なのですか?
    >ssl.confからwww.example.comのバーチャルホスト設定を削除すればいいだけだと思うのですが…

    「ssl.conf」には一つのバーチャルホスト(www.example.com)しか設定していません。
    「httpd.conf」側には複数のバーチャルホスト(www.example.comおよびwww.example.net)が設定されています。

    この状態でhttpd.confに記述はあるが、ssl.confに記述のないドメインに対して
    httpsでアクセスすると強引に表示される?為、証明書のエラーがでてしまうのです。

    >証明書のコモンネームはwww.example.comでいいんですよね?
    はい、www.example.comとなります。

    b-wind様

    >それは設定がおかしい。
    >証明書が一致しないことを除けば、HTTPS でも VirtualHost は分けて立てられる。
    >実際テスト用とかでやってるし。

    今回の意図は記述していないドメインの場合はSSL通信したくないという点です。
    ですので、VirtualHostをわけて立てたいわけではなく、
    記述してもいないドメインの通信を許可したくないということです。
  • id:b-wind
    > 記述してもいないドメインの通信を許可したくないということです。
    それができないんですよ、プロトコルの原理上どうやっても。
    だから、「仕方なく」VirtualHost を複数分ける方法ぐらいしかないと。
  • id:loxia
    b-wind様

    ご回答ありがとうございます。

    >>記述してもいないドメインの通信を許可したくないということです。
    >それができないんですよ、プロトコルの原理上どうやっても。
    >だから、「仕方なく」VirtualHost を複数分ける方法ぐらいしかないと。

    そ、そうなんですか・・・
    バーチャルホスト自体の技術はポピュラーなものなので、
    比較的利用者が多いのでこの点のなにか技があるかと思っていたのですが。。。

    そうするとバーチャルホストを本格的に利用するには
    そういった点をあきらめるか、
    もしくはIPベースで解決するかしかないということですね。

    現状のサーバではグローバルIPの追加ができない為、
    筐体を別にして対応したいと思います。。。

    度々のご助言ありがとうございます。
  • id:poch-7003
    あ,すみません.勘違いしていました.
    えと,たしかハンドシェーク後にHostヘッダを取ることになるので無理かなと思います.
    #大変失礼しました(^^;

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません