【SSL証明書について】

ユニークなグローバルIPで、名前ベースでapache(ver.2)を運営しています。

そのサーバで、
https://example.com
のSSL証明書を取得して、運営をしています。
同じサーバで、別のドメイン名
https://example.net
のSSL証明書を取得して、
VirtualHostの設定で運営しようと思ったのですが、
http://www.hatena.ne.jp/1131247110
をみて、出来ないことに気付きました。

しかし、自分で試していないのであきらめきれません。

じゃ、やってみればいいのですが、SSLの取得代金がパーになるのも嫌なので、
なぜダメなのかわかりやすく説明してください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/11/06 21:02:47
  • 終了:--

回答(4件)

id:jiangmin-alt No.1

jiangmin回答回数125ベストアンサー獲得回数82005/11/06 21:37:50

ポイント18pt

http://www.hatena.ne.jp/1131278567

人力検索はてな - 【SSL証明書について】 ユニークなグローバルIPで、名前ベースでapache(ver.2)を運営しています。 そのサーバで、 https://example.com のSSL証明書を取得して、運営をして..

URLはダミーです。すいません。


- 名前ベースのバーチャルホストは、クライアントからのリクエストヘッダの「Host:」行を見て応答内容を振り分けている

- SSLの証明書の授受と確認は本来目的とする通信が行われる前、即ち「Host:」行が書いてあるリクエストヘッダを受取る前だから


たぶんこんな感じです。

http://www.hatena.ne.jp/1131247110 の回答にあるように、ポート番号を別々にするとできるのでしょう。

id:keijiro

なるほど。

SSLと通常の場合は違うのですね!

2005/11/10 13:27:05
id:karla No.2

karla回答回数130ベストアンサー獲得回数42005/11/06 21:58:51

ポイント18pt

http://lists.debian.or.jp/debian-users/200505/msg00138.html

[debian-users:43665] Re: Virtualhost $BKh$K(BSSL$B>ZL@(B $B=q$rH/9T(B

URLに

--------------------

VirtualHostを特定するHTTP 1.1のHostヘッダはhttpsで暗号化されているはず。

だけども、VirtualHost毎に証明書を区別しようと思うと、SSLで通信するまえに、

SSLの中身を見る必要がある。

従って、1つのあて先(IPアドレスとport番号の組)では、

1つの証明書しか利用できない。

--------------------

といったコメントがありました。


どのVirtualHost宛てか見るためには、SSLの通信を解読しなければなりません。

ですが、解読するためには証明書を選択する必要があります。

選択するためには、どのVirtualHost宛てか知る必要があります。

いわゆる「玉子が先か、鶏が先か」の状態です。

そのためIPアドレスとポートで使う証明書を決めているそうです。


回避策としては以下の方法が考えられます。

・443以外のポート番号を使う

・NICに複数IPアドレスの割り当て


環境が分からないのでLinuxの設定例を載せておきます。

http://www.itmedia.co.jp/help/tips/linux/l0494.html

http://itbtech.itboost.co.jp/inst/inst_19.php

id:keijiro

ありがとうございます。

2005/11/10 13:27:53
id:ttamo No.3

たも回答回数175ベストアンサー獲得回数292005/11/07 17:44:16

ポイント18pt

http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#vhosts

SSL/TLS Strong Encryption: FAQ - Apache HTTP Server

HTTP というプロトコルを SSL で包んでいるのが HTTPS ですから、

まず SSL で証明書を出してから HTTP の情報交換をするわけです。


しかし、virtual hosts という機能は、HTTP のヘッダに合わせて

ホストを振り分ける仕組みです。それで、順序が違うわけですね。


SSL 証明書に関するサーバとクライアントのやりとりは、

クライアントが HTTP ヘッダを提出する前におこなわれるので、

virtual hosts の仕組みが利かない。これが答えです。


なお、「この証明書はルート証明書の署名がありません」とか

エラーが出てもいいなら、自分で適当な証明書を作って

テストしてみることは可能ですよ。いわゆる「オレオレ証明書」ですね。

オレオレでも、どの証明書が使われたのかを見ることはできますから。

id:keijiro

ありがとうございます。

2005/11/10 13:28:15
id:ma-kanoh No.4

ma-kanoh回答回数155ベストアンサー獲得回数42005/11/08 00:46:21

ポイント18pt

http://www.atmarkit.co.jp/aig/02security/ssl.html

セキュリティ用語事典 [SSL(Secure Sockets Layer)]

純粋に技術的に、ですが。


上記のURL中

(2)サーバの証明書を送信

の「サーバ証明書」に

https://example.com

と記述してあります。

そのため、例えば


https://example.net


というサイトをアクセスするとブラウザ側でSSLサーバ証明書の内容を見て「警告」が出ます。SSLサーバ証明書の内容とサイトが適合しないという理由で。単に「警告」が出るだけで、SSLの取得代金自体は必ずしも無駄にはなりません。


が、この「警告」を「ダメ」と判定する人もいます。これは人によるので、なんとも言えません。

id:keijiro

ありがとうございました。

仕組みがよく分かりました!

2005/11/10 13:28:51

コメントはまだありません

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

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

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

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