_default_ VirtualHost在端口443上重叠,第一个优先


64

我在同一服务器(ubuntu 10.04)上运行的Rails 3应用程序中有两个ruby,都使用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一起使用,因为SSL握手(当浏览器接受安全Web服务器的证书时)发生在HTTP请求之前,HTTP请求标识了适当的基于名称的虚拟主机。如果您打算使用基于名称的虚拟主机,请记住,它们只能与您的非安全Web服务器一起使用。

但是无法弄清楚如何在同一服务器上运行两个ssl应用程序。

谁能帮我?


5
_default_提供的配置中没有任何虚拟主机,因此它们在其他位置。输出是apache2ctl -S什么?(是的,如果您不需要支持运行Windows XP或其他不支持TLS SNI的客户端浏览器,则可以在不同的证书上运行多个基于SSL名称的虚拟主机。是否需要支持Windows? XP?)
Shane Madden

Answers:


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>

!注释“#重要的需要被移除或者移动到另一行,否则,非常感谢你的解释不准确的错误消息对我来说。
flickerfly

3
这不再适用于Apache 2.4.7
malhal,2014年

谢谢。我发现我需要注释掉“侦听443”,因为它也在我个人的conf.d / website.conf配置中使用
dlink

3

它也帮助我执行了“ / usr / sbin / apachectl -S”。此命令出口在同一路径上显示两个“ 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)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.