我希望安全地为我的 Web 服务器上的流量提供服务。我正在运行 Ubuntu 服务器 20.04 ,它具有对使用证书Abyss Web Server
的本机支持。Let's Encrypt
我完全按照他们网站上的所有说明进行操作,但是之后尝试访问它时,它只会给出 403 错误。切换回 http 时,没有任何问题 - 我可以完美地访问该站点。当从 https 切换到 http 时,我唯一要更改的是下拉框,上面写着protocol
(见下图)然后重新启动服务器。
443 显然在我的计算机和路由器上打开(否则我只会收到超时响应)
生成 LE 证书时没有遇到任何问题。控制台显示一切都很好,但实际上并非如此。
我所有的网络流量在到达我之前都经过 Cloudflare - 这可能是导致问题的原因吗?如果是这样,我会坚持使用 Cloudflare 的 http,因为它们提供了额外的安全性,但这听起来像是我的电脑出了问题 - 有些东西不允许 https 请求实际访问该网站。
Cloudflare 自己提供了一些加密,但这只是在用户代理和 Cloudflare 服务器之间 - Cloudflare 和原始服务器之间没有。我想要端到端加密。
所以当你访问我的网站时,它会说https
,但这只是用户和 Cloudflare 之间的 - 我的服务器和 Cloudflare 之间的流量仍然是端口 80 上的普通 http。
为了证明我正确地遵循了说明,以下是我的网站在主控制台中的主要设置(使用我的主机名):
可能是我不知道的计算机上的某些规则吗?我认为这是一个服务器端问题,与 cloudflare 无关。文档路径htdocs/
从未更改,并且不在需要提升权限才能访问我的计算机的位置。就像我之前说的 - 当我在端口 80 上切换回 http 时,一切正常。我没有改变其他任何东西。
目前,我刚刚将我的网站切换回 http 以便可以访问,直到(希望)这个问题能够得到解决。
更新:
绕过 Cloudflare 的代理带来了相同的结果 - 403 禁止。
为了提供一些可能有帮助的额外信息,这里是我的 DNS 记录(敏感信息被划掉):
我的Let's Encrypt
证书现在也已经过完全验证,所以它一定是权限或主机名问题。
解决了!
这与我期望的解决方案完全相反。
问题不在我的源服务器端,所有权限和防火墙规则都设置正确 - 这是 Cloudflare 端的问题。
因为我已将站点配置为仅使用 https ,尝试通过 HTTP 访问站点返回 403 禁止,因为我不允许 HTTP 流量,只允许 HTTPS。
结果,Cloudflare,因为我第一次将该网站上线时的设置方式,一直尝试通过 HTTP 查看我的网站,并在收到该错误时将其显示给用户。重置我的所有 Cloudflare 设置并重新配置它们,以便它可以通过 HTTPS 访问我的网站,使其可以访问,同时仍然通过 Cloudflare 进行代理。
它现在还将所有 HTTP 请求重写为 HTTPS,因此不再出现 403 错误!