我希望我的 Web 服务器上的流量能够得到安全传输。我运行的是 Ubuntu Server 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
证书现在也已经完全验证,所以它一定是权限或主机名问题之类的。
答案1
解决了!
这与我期望的解决方案完全相反。
问题不在我的原始服务器端,所有权限和防火墙规则都设置正确 - 这是 Cloudflare 端的问题。
因为我已经将网站配置为使用 https仅有的,尝试通过 HTTP 访问该站点时返回 403 禁止,因为我不允许 HTTP 流量,只允许 HTTPS。
因此,由于我在使用 Cloudflare 时设置的方式,第一的将此网站上线,不断尝试通过 HTTP 查看我的网站,当出现该错误时,会将其显示给用户。重置我的所有 Cloudflare 设置并重新配置它们,以便它可以通过 HTTPS 访问我的网站,这样它就可以访问,同时仍然通过 Cloudflare 代理。
它现在还将所有 HTTP 请求重写为 HTTPS,因此不再出现 403 错误!