使用具有Apache的一个启用SSL的站点的多个站点

时间:2014-02-10 17:23:45

标签: apache ssl https virtualhost

我目前有一台Apache服务器在两个站点上提供内容 - 称之为site1.com和site2.com。我已经为每个人设置了VirtualHost指令,它们都可以正常工作。

我还为site1.com提供SSL内容,这也很好用(即用户可以导航到https://site1.com并查看内容)。但是,如果用户尝试导航到https://site2.com,则会出现此问题。然后(例如在Google Chrome中),他们会看到以下消息:

  

您试图访问site2.com,但实际上您已达到了   服务器将自己标识为site1.com。这可能是由a引起的   服务器上的配置错误或更严重的问题。一个   您网络上的攻击者可能试图让您访问假冒   (也可能是有害的)site2.com版本。

这是一个非常可怕的警告,我更喜欢连接失败,“HTTPS连接被拒绝”,“SSL错误”或类似的东西。 (如果他们点击警告,则会显示https://site1.com的内容,但地址栏中显示https://site2.com。)我相信这应该可以使用SNI - 但我不知道如何进行设置,以便获取的唯一SSL连接是适用于site1.com的连接。

以下是site1的骨架VirtualHost指令:

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
    ServerName site1.com
    ServerAdmin webmaster@site1.com

    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/>
            Options FollowSymLinks
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>
</VirtualHost>
</IfModule>

我们已尝试将_default_:443更改为site1.com:443,但这会阻止所有与服务器的SSL连接返回内容。

1 个答案:

答案 0 :(得分:0)

您需要为site1.com和site2.com拥有不同的证书,或者拥有包含这两个名称的证书。我在发布的配置中根本没有看到任何证书配置,因此我假设您拥有一个仅对site1.com有效的全局证书。