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>
これを機能させる方法はありますか?
Apacheは、同じIPアドレスとポートを持つ複数の<VirtualHost>
セクションがあることを警告しているように聞こえます...警告なしで動作する限り、サーバー名表示のようなものを使用する必要があると思いますSNI)、SSLハンドシェイクの一部として要求されたホスト名を識別する方法。基本的には、SSLを介した名前ベースの仮想ホスティングを実行できますが、ブラウザでどの程度サポートされているかはわかりません。 SNIのようなものを除き、基本的には、パブリックインターネットに公開するIPアドレスごとに1つのSSL対応ドメイン名に制限されます。
もちろん、Webサイトに適切にアクセスできれば、おそらく警告を無視しても大丈夫でしょう。これらの特定のものはそれほど深刻ではありません-主に、問題が発生した場合に何を見るべきかを示しています
私の知る限り、バージョン2.2.12以降、ApacheはSNIをサポートしています。残念ながら、ドキュメントにはまだその変更が反映されていません。
http://wiki.Apache.org/httpd/NameBasedSSLVHostsWithSNI が完了するまで進みます
次のものを交換できる場合があります。
VirtualHost ipaddress:443
と
VirtualHost *:443
おそらく、すべてのvirtホストでこれを行う必要があります。
それはおそらくそのメッセージをクリアするでしょう。 ServerNameディレクティブにメッセージ要求のルーティングを心配させてください。
繰り返しますが、同じマシンに複数のIPエイリアスがある場合、これを実行できない場合があります。
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>
まず、設定ファイルにNameVirtualHost ip:443が必要です!おそらく80が最後にありますが、443も必要です。
次に、*。domain証明書(ワイルドカード)が必要です(証明書を作成することは可能です)
第三に、1つのIPでsomething.domainウェブのみを作成できます(証明書のため)
Apacheは、名前ベースの仮想ホストではSSLをサポートしていません。IPベースの仮想ホストでのみサポートしています。
出典:Apache 2.2 SSL FAQ question 名前ベースの仮想ホスティングを使用して異なるSSL仮想ホストを識別することができないのはなぜですか?
SSLとは異なり、TLS仕様では名前ベースのホスト(他の誰かが言及したSNI)が許可されていますが、Apacheはまだこの機能をサポートしていません。 openssl 0.9.8に対してコンパイルされた場合、将来のリリースで想定されます。
また、 mod_gnutls はSNIをサポートすると主張していますが、実際に試したことはありません。
特定のIPでNameVirtualHost
機能を有効にするには、以下の部分を追加する必要があります。
NameVirtualHost IP_Address:443