我目前有一台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连接返回内容。
答案 0 :(得分:0)
您需要为site1.com和site2.com拥有不同的证书,或者拥有包含这两个名称的证书。我在发布的配置中根本没有看到任何证书配置,因此我假设您拥有一个仅对site1.com有效的全局证书。