我目前有一个 Apache 服务器在两个网站上提供内容 - 称它们为 site1.com 和 site2.com。我已经为它们中的每一个设置了 VirtualHost 指令,它们都工作正常。
我还为 site1.com 提供 SSL 内容,这也很好用(即用户可以导航到 https://site1.com
并查看内容)。但是,如果用户尝试导航到 https://site2.com
,就会出现问题。然后(例如在 Google Chrome 中)他们会看到以下消息:
You attempted to reach site2.com, but instead you actually reached a server identifying itself as site1.com. This may be caused by a misconfiguration on the server or by something more serious. An attacker on your network could be trying to get you to visit a fake (and potentially harmful) version of 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 连接返回内容.
最佳答案
您需要为 site1.com 和 site2.com 使用不同的证书,或者拥有包含两个名称的证书。我在您发布的配置中根本看不到任何证书配置,因此我假设您拥有仅对 site1.com 有效的全局证书。
关于apache - 使用 Apache 将多个站点与一个启用 SSL 的站点结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21683855/