代码之家  ›  专栏  ›  技术社区  ›  Raffaele Rossi

没有代理服务器,无法正确加载HTTPS网站

  •  0
  • Raffaele Rossi  · 技术社区  · 7 年前

    我在主页上有一个论坛(用Xenforo创建)。我最近把https和 让我们加密 (我已经使用CPanel启用了IT服务器端)。该网站使用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 回复  |  直到 7 年前
        1
  •  2
  •   coolaj86    7 年前

    弗斯特

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

    我在建的时候 Greenlock 我遇到了类似的问题,结果证明证书没有正确加载,所以我假设这是来自浏览器的TLS“隐私错误”,而不是DNS或HTTP问题。

    接下来

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

    格林洛克 ,certbot和许多其他的让我们加密客户机使用这样的命名证书文件的约定:

    • privkey.pem
    • cert.pem
    • chain.pem
    • fullchain.pem ( 证书PEM + 链.pem )

    有些人也有 bundle.pem ( 全链.pem + 私人密钥.pem )

    许多Web服务器需要CRT并在其文档中输入密钥。凭直觉你可能认为CRT 证书PEM 关键是 私人密钥.pem .

    这通常是不正确的。

    CRT是fullchain.pem

    如果您的站点配置为使用 证书PEM 作为CRT而不是 全链.pem 你将得到你描述的问题。

    原因是任何去过的人 任何 正确使用相同内容的网站 中间权力机构 正如您将看到的页面预期-必要的 链.pem 将已存在于浏览器的缓存中。

    但是,任何拥有浏览器的人,如果缓存中没有丢失的部分,就会得到一个安全错误。

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

    这取决于“代理”的类型——因为这对不同的人意味着不同的事情。

    我的猜测是,代理被用于比人的浏览器更多的站点(尤其是许多小的业余站点,使用相同的链),也许代理实际上是下载站点,解密,然后转发,或者代理以某种方式补充。具有自己缓存的证书链。

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

    你的问题可能和我的问题完全不同。这些症状听起来如此相似可能是巧合。

    我不想把你带到一个兔子洞里去,它不会把你带到任何地方,但我想检查一下你的设置,确保你在使用 全链.pem 而不是 证书PEM 是重要的第一步。

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

    重定向的问题听起来很巧合。我怀疑这有关系。

    最有可能的情况是,一旦你的站点强制使用了HTTPS,更多的浏览器没有让我们在缓存中加密中间证书的访问者突然开始注意到这个问题,因为他们现在受到了影响。

    但是,如果您可以撤销这些更改并确认HTTPS(启用了SSL)对这些用户有效,那么我建议您尝试添加相同的头,而不是执行重定向: