単一のIPからSSLで複数のApache仮想ホストをホストする必要があります。
さて、SSLはHTTPリクエストをラップするため、公開鍵が最初にクライアントに送信されるまで、どのホストがリクエストされているかを知る方法はありません。これは基本的に、標準のSSL証明書を使用するSSL仮想ホストの可能性を壊します。
ユニファイドコミュニケーション証明書(UCC)、別名サブジェクト代替名(SAN)証明書を取得しました。これにより、複数のドメインに同じ証明書を提供できます。
これをanySSLリクエストに対してApacheが提供する証明書にしたい-そして暗号化が完了したら、Apacheに通常どおり仮想ホストを解決させる設立。
このためにApacheをどのように構成すればよいですか?私はこれをどのように行うことができるかを調査しようとしましたが、見つけることができるのはそれが可能であると言っている引用ですが、詳細はありません:
wiki.Apache.org/httpd/NameBasedSSLVHostsWithSNI
Apacheは要求でホスト名を確認した後でSSL接続を再ネゴシエートできます(実際に行います)が、最初のハンドシェイク中に要求のホスト名と一致させるために使用する適切なサーバー証明書を選択するには遅すぎるため、証明書に関するブラウザーの警告/エラーが発生しますそれらの間違ったホスト名。
serverfault.com/questions/48334/Apache-virtual-hosts-with-ssl
ちなみに、1つのIPアドレスに複数のSSLで保護された名前付き仮想ホストを置くことは可能です-私は自分のウェブサイトでそれを行います-それはApacheログにあらゆる種類の警告を生成し、ブラウザに証明書警告を生成します。見た目をきれいにする必要のある本番サイトにはお勧めしません。 -デイビッド7月31日4:58
www.digicert.com/subject-alternative-name.htm
単一のIPアドレスで複数のSSLサイトを仮想ホストします。単一のサーバーで複数のSSL対応サイトをホストするには、通常、サイトごとに一意のIPアドレスが必要ですが、サブジェクトの別名を持つ証明書でこの問題を解決できます。 Microsoft IIS 6とApacheはどちらも、SAN証明書とも呼ばれる)ユニファイドコミュニケーションSSLを使用して仮想ホストHTTPSサイトに接続できます。
助けてください。
私は自分のApache 2.2.14インスタンスでこれをテストしましたが、うまくいきました:
NameVirtualHostディレクティブを使用します(ports.confへ):
NameVirtualHost *:443
仮想ホストを定義します。
<VirtualHost *:443>
ServerName www.siteA.com
DocumentRoot "/opt/Apache22/htdocs/siteA"
SSLCertificateFile "/path/to/my/cert"
SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>
<VirtualHost *:443>
ServerName www.siteB.com
DocumentRoot "/opt/Apache22/htdocs/siteB"
SSLCertificateFile "/path/to/my/cert"
SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>
これを link をリソースとして使用しました。