_default_ VirtualHostがポート443でオーバーラップし、最初のものが優先されます


64

同じサーバー(ubuntu 10.04)で実行されている2つのRuby on Rails 3アプリケーションがあり、どちらもSSLを使用しています。

ここに私のApache設定ファイルがあります:

<VirtualHost *:80>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example1.com
DocumentRoot /home/me/example1/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example1/production/shared/example1.crt
SSLCertificateKeyFile /home/me/example1/production/shared/example1.key
SSLCertificateChainFile /home/me/example1/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>


<VirtualHost *:80>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
</VirtualHost>
<VirtualHost *:443>
ServerName example2.com
DocumentRoot /home/me/example2/production/current/public
SSLEngine on
SSLCertificateFile /home/me/example2/production/shared/iwanto.crt
SSLCertificateKeyFile /home/me/example2/production/shared/iwanto.key
SSLCertificateChainFile /home/me/example2/production/shared/gd_bundle.crt
SSLProtocol -all +TLSv1 +SSLv3
SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM
</VirtualHost>

問題は何ですか:

サーバーを再起動すると、次のような出力が表示されます。

 * Restarting web server apache2                                   
 [Sun Jun 17 17:57:49 2012] [warn] _default_ VirtualHost overlap on port 443, the first has precedence
 ... waiting [Sun Jun 17 17:57:50 2012] [warn] _default_ VirtualHost overlap on port 443, the first has precedence

この問題が発生する理由をグーグルで調べると、次のようなものが得られました:

適切な名前ベースの仮想ホストを識別するHTTP要求の前にSSLハンドシェイク(ブラウザがセキュアWebサーバーの証明書を受け入れる場合)が発生するため、名前ベースの仮想ホストをSSLで使用することはできません。名前ベースの仮想ホストを使用する予定がある場合、それらは非セキュアWebサーバーでのみ機能することに注意してください。

しかし、同じサーバーで2つのsslアプリケーションを実行する方法を理解することはできません。

誰でも私を助けることができますか?


5
_default_指定した設定に仮想ホストがないため、他の場所にあります。の出力はapache2ctl -S何ですか?Windows XP?)
シェーンマッデン

回答:


87

もうすぐ!

これをports.confまたはhttp.confに追加し、上記の設定を保持します。

<IfModule mod_ssl.c>
    # If you add NameVirtualHost *:443 here, you will also have to change
    # the VirtualHost statement in /etc/apache2/sites-available/default-ssl
    # to <VirtualHost *:443>
    # Server Name Indication for SSL named virtual hosts is currently not
    # supported by MSIE on Windows XP.

    # !important below!
    NameVirtualHost *:443 
    Listen 443
</IfModule>

コメント「#!important!を削除するか、別の行に移動する必要があります。それ以外の場合は、この不正確なエラーメッセージを解釈してくれてありがとうございます。
flickerfly 14

3
これは、Apache 2.4.7
Malhal 14年

ありがとうございました。Listen 443は、個々のconf.d / website.conf構成でも使用されているため、コメントアウトする必要があることがわかりました
-dlink

3

「/ usr / sbin / apachectl -S」も実行できました。このコマンド出口は、同じパス上の2つの「ssl.conf」ファイルを表示します。違反者ファイルを移動または削除すると、すべてが動作するはずです。


1

これをあなたのApache設定に追加できます/etc/apache2/ports.conf

<IfModule mod_ssl.c>                
    Listen 443                      
    <IfModule !mod_authz_core.c>    
        # Apache 2.2                
        NameVirtualHost *:443       
    </IfModule>                     
</IfModule>                         

(これはApache 2.2と2.4の両方で機能します)

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