.htaccess没有阻止"此连接不受信任"警告

时间:2014-07-17 06:42:34

标签: apache .htaccess mod-rewrite ssl

拥有附加域的托管帐户。目录结构如下:

/public_html (main site is hosted in this directory)
/public_html/secondary_site/ (secondary site is hosted in this directory.

我在public_html文件夹中使用以下.htaccess文件(并且在secondary_site文件夹中没有.htaccess文件):

RewriteEngine On

# BEGIN Domain to folder mapping
    # pointing HTTPS secondarysite.com to https://primarysite.com/secondarysite/
    RewriteCond %{SERVER_PORT} ^443$
    ReWriteCond %{HTTP_HOST} primarysite.com
    ReWriteCond %{REQUEST_URI} !primarysite/
    ReWriteRule ^(.*)$ https://primarysite.com/secondarysite/$1 [L]

    # pointing HTTP secondarysite.com to http://primarysite.com/secondarysite/
    RewriteCond %{SERVER_PORT} ^80$
    ReWriteCond %{HTTP_HOST} secondarysite.com
    ReWriteCond %{REQUEST_URI} !secondarysite/
    ReWriteRule ^(.*)$ http://primarysite.com/secondarysite/$1 [L]
# END Domain to folder mapping

第二条规则适用于非安全连接,它正确转发到public_html / secondary_site目录。

然而,当我尝试安全地连接到secondarysite.com时,我会收到警告页面的说明:

  

您试图访问secondarysite.com,但实际上是您   到达服务器,将自己标识为primarysite.com。这可能是   由服务器上的错误配置或更多内容引起的   严重。您网络上的攻击者可能会试图让您进入   访问secondarysite.com的假(并且可能有害)版本。

如果我点击"我明白了,继续"按钮,然后它将我带到public_html / secondary_site的正确的SSL安全目录。 SSL锁定是绿色且快乐。

为什么这个.htaccess文件没有捕获对secondarysite的请求并重新写入primarysite结构,然后由于域名不匹配而有机会对错误的证书进行修改?

1 个答案:

答案 0 :(得分:0)

(这或多与this question中的问题大致相同,所以我会从那里调整自己的答案。)

HTTPS是基于TLS / SSL的HTTP(请参阅RFC 2818),它首先在发送任何HTTP流量之前建立SSL / TLS连接。在建立SSL / TLS连接后,任何重定向(通过mod_rewrite,自定义PHP代码或其他)都将始终适用。

不这样做实际上是一个安全问题,因为攻击者可以在证书验证之前重写并重定向客户端。

如果您要从https://secondarysite.com重定向到https://primarysite.com,则https://secondarysite.com获取的证书必须对secondarysite.com有效(然后,为{{1}获取的证书}}必须对https://primarysite.com)有效。

(如果两个主机在同一个IP地址上提供服务,则可以使用具有服务器名称指示的两个不同证书,但并非所有客户端都必须支持它。)

最简单的方法是获取对primarysite.comsecondarysite.com都有效的证书。这可以使用具有多个主题备用名称条目的单个证书来完成。