apache - 使用 Apache 将多个站点与一个启用 SSL 的站点结合使用

标签 apache ssl https virtualhost

我目前有一个 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/

相关文章:

ios - 发送带有字符串的后请求

node.js - Amazon elastic beanstalk 上的 HTTP/HTTPS Nodejs 服务器

apache - 通过 .htaccess 设置过期 header 和 gzipping 数据

apache - htaccess 重定向 url 带参数

通过 CLI 的 PHP 扩展有效,但不能通过 apache

php - 用于登录的覆盖窗口中的 SSL

php - 表单提交后,在输入中显示新值而不是缓存的值

php - Symfony2 从 ssl 子域注销

node.js - 无法从带有 SSL 的域通过 POST 来表达服务器

ios - 连接到 https 的要求