没有代理无法正确加载 https 网站
https website cannot be properly loaded without proxy
我有一个网站,主页上有一个论坛(使用 Xenforo 创建)。我最近将 HTTPS 与 Let's encrypt 放在一起(我已使用 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/ [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/ [R,L]
现在我遇到了一个奇怪的问题:有些人可以访问我的网站,有些人不能,他们必须使用代理!
我添加了这些规则,因为我需要将所有 http 重定向到 https,因此 http://forums.example.com/
必须变为 https://forums.example.com/
。我以前从未遇到过这个问题。有什么想法吗?
第一个
这些人收到的具体错误消息是什么?
当我构建 Greenlock 时,我遇到了类似的问题,结果证明该证书没有被正确加载,所以我假设这是一个来自 "privacy error" 的 TLS浏览器,不是 DNS 或 HTTP 问题。
下一个
我对cPanel不熟悉,但是我对ACME标准和客户端非常熟悉。
Greenlock、certbot 和许多其他 Let's Encrypt 客户端使用如下命名证书文件的约定:
privkey.pem
cert.pem
chain.pem
fullchain.pem
(cert.pem
+ chain.pem
)
有些还有bundle.pem
(fullchain.pem
+ privkey.pem
).
许多 Web 服务器在其文档中要求使用 CRT 和 KEY。直觉上你可能认为 CRT 是 cert.pem
而 KEY 是 privkey.pem
。
这通常是不正确的。
CRT 是 fullchain.pem
如果您的站点配置为使用 cert.pem
而不是 fullchain.pem
作为 CRT,您将遇到您描述的问题。
原因是,任何访问过 任何 站点并正确使用相同 中间权限 的人都会看到预期的页面- 必要的 chain.pem
已经存在于浏览器的缓存中。
但是,如果浏览器的缓存中没有丢失的部分,任何人都会收到安全错误。
为什么要通过代理工作?
这取决于 "proxy" 的类型 - 因为这对不同的人可能有不同的含义。
我的猜测是代理被用于比该人的浏览器更多的站点(特别是许多使用相同链的小型爱好者站点)并且代理可能实际上正在下载站点,对其进行解密,然后转发它,或者代理可能以某种方式用自己的缓存补充证书链。
浏览器隐私错误的可能解决方案
您的问题可能与我遇到的问题完全不同。症状听起来如此相似可能是巧合。
我不想把你带入一个无处可去的兔子洞,但我认为检查你的设置以确保你使用的是 fullchain.pem
而不是 cert.pem
是重要的第一步。
.htaccess 重定向的可能解决方案
重定向问题对我来说听起来很巧合。我怀疑这是否相关。
很可能在您的网站强制使用 https 后,更多使用缓存中没有 Let's Encrypt 中间证书的浏览器的访问者突然开始注意到这个问题,因为他们现在受到了影响。
但是,如果您可以撤销这些更改并确认 HTTPS (SSL-enabled) 对这些用户有效,那么我建议您不要进行重定向,而是尝试添加 headers将做同样的事情:
我有一个网站,主页上有一个论坛(使用 Xenforo 创建)。我最近将 HTTPS 与 Let's encrypt 放在一起(我已使用 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/ [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/ [R,L]
现在我遇到了一个奇怪的问题:有些人可以访问我的网站,有些人不能,他们必须使用代理!
我添加了这些规则,因为我需要将所有 http 重定向到 https,因此 http://forums.example.com/
必须变为 https://forums.example.com/
。我以前从未遇到过这个问题。有什么想法吗?
第一个
这些人收到的具体错误消息是什么?
当我构建 Greenlock 时,我遇到了类似的问题,结果证明该证书没有被正确加载,所以我假设这是一个来自 "privacy error" 的 TLS浏览器,不是 DNS 或 HTTP 问题。
下一个
我对cPanel不熟悉,但是我对ACME标准和客户端非常熟悉。
Greenlock、certbot 和许多其他 Let's Encrypt 客户端使用如下命名证书文件的约定:
privkey.pem
cert.pem
chain.pem
fullchain.pem
(cert.pem
+chain.pem
)
有些还有bundle.pem
(fullchain.pem
+ privkey.pem
).
许多 Web 服务器在其文档中要求使用 CRT 和 KEY。直觉上你可能认为 CRT 是 cert.pem
而 KEY 是 privkey.pem
。
这通常是不正确的。
CRT 是 fullchain.pem
如果您的站点配置为使用 cert.pem
而不是 fullchain.pem
作为 CRT,您将遇到您描述的问题。
原因是,任何访问过 任何 站点并正确使用相同 中间权限 的人都会看到预期的页面- 必要的 chain.pem
已经存在于浏览器的缓存中。
但是,如果浏览器的缓存中没有丢失的部分,任何人都会收到安全错误。
为什么要通过代理工作?
这取决于 "proxy" 的类型 - 因为这对不同的人可能有不同的含义。
我的猜测是代理被用于比该人的浏览器更多的站点(特别是许多使用相同链的小型爱好者站点)并且代理可能实际上正在下载站点,对其进行解密,然后转发它,或者代理可能以某种方式用自己的缓存补充证书链。
浏览器隐私错误的可能解决方案
您的问题可能与我遇到的问题完全不同。症状听起来如此相似可能是巧合。
我不想把你带入一个无处可去的兔子洞,但我认为检查你的设置以确保你使用的是 fullchain.pem
而不是 cert.pem
是重要的第一步。
.htaccess 重定向的可能解决方案
重定向问题对我来说听起来很巧合。我怀疑这是否相关。
很可能在您的网站强制使用 https 后,更多使用缓存中没有 Let's Encrypt 中间证书的浏览器的访问者突然开始注意到这个问题,因为他们现在受到了影响。
但是,如果您可以撤销这些更改并确认 HTTPS (SSL-enabled) 对这些用户有效,那么我建议您不要进行重定向,而是尝试添加 headers将做同样的事情: