没有代理,无法正确加载https网站

时间:2018-05-19 17:32:39

标签: .htaccess redirect https lets-encrypt xenforo

我的网站在主页上有一个论坛(使用Xenforo创建)。我最近把HTTPS与让我们加密(我用cPanel启用它的服务器端)。该网站在HTTP上运行良好。

现在我有了HTTPS,我遇到了问题,因为有些人可以像往常一样访问网站,但有些人不能。那些无法打开我网站的人必须使用代理,然后加载网站。

我在.htaccess文件中编辑了一行后发生了此错误:

#   Mod_security can interfere with uploading of content such as attachments. If you
#   cannot attach files, remove the "#" from the lines below.
<IfModule mod_security.c>
    SecFilterEngine Off
    SecFilterScanPOST Off
</IfModule>

ErrorDocument 401 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 405 default
ErrorDocument 406 default
ErrorDocument 500 default
ErrorDocument 501 default
ErrorDocument 503 default

<IfModule mod_rewrite.c>
    RewriteEngine On

    # I HAVE ADDED THESE 2 NEW LINES
    RewriteCond %{SERVER_PORT} 80
    RewriteRule ^(.*)$ https://forums.example.com/$1 [R,L]

    #   If you are having problems with the rewrite rules, remove the "#" from the
    #   line that begins "RewriteBase" below. You will also have to change the path
    #   of the rewrite to reflect the path to your XenForo installation.
    #RewriteBase /xenforo

    #   This line may be needed to enable WebDAV editing with PHP as a CGI.
    #RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
    RewriteRule ^.*$ /index.php [NC,L]

</IfModule>

我添加了这两行:

RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://forums.example.com/$1 [R,L]

现在我有这个奇怪的问题:有些人可以访问我的网站,有些人不能,他们必须使用代理!

我添加了这些规则,因为我需要将所有http重定向到https,因此http://forums.example.com/必须变为https://forums.example.com/。我之前从未遇到过这个问题。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

第一

这些人得到的具体错误信息是什么?

当我构建Greenlock时,我遇到了类似的问题,结果证明该证书未正确加载,因此我假设这是一个TLS&#34;隐私错误& #34;来自浏览器,而不是DNS或HTTP问题。

下一步

我不熟悉cPanel,但我对ACME标准和客户非常熟悉。

Greenlock,certbot和许多其他加密客户端使用命名证书文件的约定,如下所示:

  • privkey.pem
  • cert.pem
  • chain.pem
  • fullchain.pemcert.pem + chain.pem

有些人还有bundle.pemfullchain.pem + privkey.pem)。

许多Web服务器在其文档中调用CRT和KEY。直观地,您可能认为CRT为cert.pem而KEY为privkey.pem

这通常是不正确的。

CRT是fullchain.pem

如果您的网站配置为使用cert.pem作为CRT而不是fullchain.pem,则会遇到您所描述的问题。

原因是任何访问任何网站的人都正确使用相同的中间权限,因为您将按预期看到该页面 - 必要的chain.pem将存在于浏览器的缓存中。

但是,任何浏览器都没有丢失的内容都会出现在缓存中会出现安全错误。

为什么它会通过代理工作?

这取决于&#34;代理&#34;的类型。 - 因为这对不同的人来说意味着不同的事情。

我的猜测是代理被用于比人们浏览器更多的网站(特别是很多使用相同链的小型爱好者网站),也许代理实际上是在下载网站,解密它,然后转发它,或者代理可能以某种方式用自己的缓存补充证书链。

浏览器隐私错误的可能解决方案

您的问题可能与我遇到的问题完全不同。症状听起来很相似可能是巧合。

我不想引导你走下一个不会让你到任何地方的兔子洞,但我认为检查你的设置以确保你使用fullchain.pem和不cert.pem是重要的第一步。

.htaccess重定向的可能解决方案

重定向的问题听起来很巧合。我怀疑它是否相关。

最有可能的是,一旦您的网站强制使用https,更多访问者在其缓存中没有使用加密中间证书的浏览器突然开始注意到问题,因为它们现在已经受到影响。

但是,如果您可以撤消这些更改并确认HTTPS(已启用SSL)适用于这些用户,那么我建议您尝试添加将执行相同操作的标头,而不是执行重定向:< / p>