私は2つのRuby on Rails 3つのアプリケーションが同じサーバーで実行されている(ubuntu 10.04)、両方とも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
この問題が発生している理由をグーグルで調べたとき、私は次のようなものを得ました:
SSLで名前ベースの仮想ホストを使用することはできません。これは、適切な名前ベースの仮想ホストを識別するHTTPリクエストの前に、SSLハンドシェイク(ブラウザが安全なWebサーバーの証明書を受け入れる場合)が発生するためです。名前ベースの仮想ホストを使用する場合は、それらが非セキュアWebサーバーでのみ機能することを忘れないでください。
しかし、同じサーバーで2つのsslアプリケーションを実行する方法を理解できません。
誰かが私を助けてくれますか?
あと少しです!
これを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>
「/ usr/sbin/apachectl -S」の実行にも役立ちました。このコマンド出口は、2つの「ssl.conf」ファイルを同じパスに表示します。違反者のファイルを移動または削除すると、すべてが正常に機能します。
これを/etc/Apache2/ports.conf
のApache構成に追加できます。
<IfModule mod_ssl.c>
Listen 443
<IfModule !mod_authz_core.c>
# Apache 2.2
NameVirtualHost *:443
</IfModule>
</IfModule>
(これはApache 2.2と2.4の両方で機能します)