適切な証明書を使用して、Apache SSLトラフィックをサブドメインにリダイレクトします


2

現在、DynDNSサブドメインを持つサーバーを持っています(foo.dyn.comと呼びましょう)。また、そのサブドメインを指すCNAMEを持つ適切なドメインもあります(bar.baz.comと呼びましょう)。foo.dyn.comには自己署名SSL証明書があり、bar.baz.comには適切なCA署名SSL証明書があります。

いずれかのドメインの非SSL要求をにリダイレクトするようにApacheをセットアップしましたがhttps://bar.baz.com、これは正常に機能します。私の問題はこれです:にアクセスしようとしhttps://foo.dyn.comている人にリダイレクトしてもらいたいですhttps://bar.baz.com。私は2つの解決策を試してみましたが、どちらもまったく正しくありません:

  1. CA証明書を使用する1つのVirtualHostがあります。この明らかなことは、誰かがアクセスしようとするとき間違った証明書を使用するドメインについて恐ろしい警告を与えますhttps://foo.dyn.com
  2. 2つのVirtualHostsがあります。1つは自己署名証明書を持つfoo.dyn.com用で、もう1つは適切な証明書を使用するbar.baz.com用です。foo.dyn.comには、すべてのトラフィックをhttps://bar.baz.comにリダイレクトするリダイレクト句があります。これは、自己署名証明書の警告が引き続き機能することを除いて機能します。また、一部の非WebブラウザHTTPクライアント(wgetなど)は、bar.baz.comでポイントされるとfoo.dyn.comの証明書を取得します

この問題を回避する方法はありますか?

回答:


1

これはプロトコルスタックの問題です。ポートごとのIPごとに1つのSSL証明書しか持てません。

その理由は次のとおりです。apacheなどのVirtualHostシステムは、HTTP Host Headerに基づいています。ただし、このヘッダーは、SSL接続の確立後に送信されます(すべてのヘッダーはSSL接続の確立後に送信されるため、そうでない場合は少し役に立たないでしょう)。

そのため、サーバーが証明書を選択する必要がある唯一の手段は、接続が着信するインターフェイスまたはIPとポートに基づいています。

警告の解決策は、証明書に2番目のドメインをSubjectAltNameとして追加することです。


0

クライアントがサポートしている場合は、サーバー名表示を使用できます。(リンクについては、SOに関するこの回答を参照してください。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.