為什麼我的網路伺服器在嘗試使用 HTTPS 時會拋出 403 Forbidden?
我希望安全地為我的 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 錯誤!