web-dev-qa-db-ja.com

SSLを使用したApache Name Virtual Host

SSLを介したトラフィックを許可するようにサーバーをセットアップしようとしています。 SSLはName Virtual Hostで動作しないことは承知していますが、専用のプライベートIPを持つ仮想マシン上にすべてのApacheサーバーがあります。適切なvmsにトラフィックをルーティングするmod_proxyがセットアップされたプライマリ仮想マシンがあります。

ただし、httpsトラフィックをルーティングするには、プロキシとvmsに証明書をインストールする必要があります。すべてのホストで使用できるワイルドカード証明書があります。すべてが正常に機能しているように見えますが、プロキシのApacheログに次のメッセージが表示されます。

[警告]初期化:SSLサーバーIP /ポートの競合:Host1.domain.com:443(/ etc/Apache2/sites-enabled/Host1:1)vs. Host2.domain.com:443(/ etc/Apache2/sites- enabled/Host2:1)

プロキシでセットアップした各ホストに対して、これらのエラーメッセージの1つがあります。プロキシの仮想ホストのセットアップを以下に掲載します。

<VirtualHost ipaddress:443>
    ServerName Host1.domain.com
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass / https://privateip:443/
    ProxyPassReverse / https://privateip:443/

    SSLProxyEngine on
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/server.crt
    SSLCertificateKeyFile /etc/ssl/private/server.key
</VirtualHost>

これを機能させる方法はありますか?

38
JamesArmes

Apacheは、同じIPアドレスとポートを持つ複数の<VirtualHost>セクションがあることを警告しているように聞こえます...警告なしで動作する限り、サーバー名表示のようなものを使用する必要があると思いますSNI)、SSLハンドシェイクの一部として要求されたホスト名を識別する方法。基本的には、SSLを介した名前ベースの仮想ホスティングを実行できますが、ブラウザでどの程度サポートされているかはわかりません。 SNIのようなものを除き、基本的には、パブリックインターネットに公開するIPアドレスごとに1つのSSL対応ドメイン名に制限されます。

もちろん、Webサイトに適切にアクセスできれば、おそらく警告を無視しても大丈夫でしょう。これらの特定のものはそれほど深刻ではありません-主に、問題が発生した場合に何を見るべきかを示しています

21
David Z

私の知る限り、バージョン2.2.12以降、ApacheはSNIをサポートしています。残念ながら、ドキュメントにはまだその変更が反映されていません。

http://wiki.Apache.org/httpd/NameBasedSSLVHostsWithSNI が完了するまで進みます

7
user273370

次のものを交換できる場合があります。

VirtualHost ipaddress:443

VirtualHost *:443

おそらく、すべてのvirtホストでこれを行う必要があります。

それはおそらくそのメッセージをクリアするでしょう。 ServerNameディレクティブにメッセージ要求のルーティングを心配させてください。

繰り返しますが、同じマシンに複数のIPエイリアスがある場合、これを実行できない場合があります。

3
Harold

VirtualHostは次のようになります。

NameVirtualHost IP_Address:443

<VirtualHost IP_Address:443>
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/ca.crt    # Where "ca" is the name of the Certificate
    SSLCertificateKeyFile /etc/pki/tls/private/ca.key
    ServerAdmin webmaster@domain_name.com
    DocumentRoot /var/www/html
    ServerName www.domain_name.com
    ErrorLog logs/www.domain_name.com-error_log
    CustomLog logs/www.domain_name.com-access_log common
</VirtualHost>
2
ELinuxbook

まず、設定ファイルにNameVirtualHost ip:443が必要です!おそらく80が最後にありますが、443も必要です。

次に、*。domain証明書(ワイルドカード)が必要です(証明書を作成することは可能です)

第三に、1つのIPでsomething.domainウェブのみを作成できます(証明書のため)

1
DataCZ

Apacheは、名前ベースの仮想ホストではSSLをサポートしていません。IPベースの仮想ホストでのみサポートしています。

出典:Apache 2.2 SSL FAQ question 名前ベースの仮想ホスティングを使用して異なるSSL仮想ホストを識別することができないのはなぜですか?

SSLとは異なり、TLS仕様では名前ベースのホスト(他の誰かが言及したSNI)が許可されていますが、Apacheはまだこの機能をサポートしていません。 openssl 0.9.8に対してコンパイルされた場合、将来のリリースで想定されます。

また、 mod_gnutls はSNIをサポートすると主張していますが、実際に試したことはありません。

1
Powerlord

特定のIPでNameVirtualHost機能を有効にするには、以下の部分を追加する必要があります。

NameVirtualHost IP_Address:443
0
Yasiru G