Linux

為什麼我的網路伺服器在嘗試使用 HTTPS 時會拋出 403 Forbidden?

  • October 11, 2020

我希望安全地為我的 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 錯誤!

引用自:https://serverfault.com/questions/1037009