我已經設置了一個簡單的服務器來測試我的TLS證書,TLS部分正常工作。我通過CloudFlare擁有自己的DNS。CloudFlare不會讓我只提供HTTPS,它只適用於HTTP和HTTPS服務
我想網站保持匿名,所以我只是將域名更改爲「example.com」。
這裏是一個簡單的服務器代碼:
package main
import (
"log"
"net/http"
)
var hostname = "example.com"
var key = "/srv/ssl/" + hostname + "-2017.03.20.key"
var cert = "/srv/ssl/ssl-bundle.crt"
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("TLS test"))
})
// go serveHTTP()
// go redirectHTTP()
serveHTTPS()
}
func serveHTTP() {
if err := http.ListenAndServe(":80", nil); err != nil {
log.Fatalf("ListenAndServe error: %v", err)
}
}
func redirectHTTP() {
err := http.ListenAndServe(":80", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
http.Redirect(w, r, "https://"+hostname+r.RequestURI, http.StatusMovedPermanently)
}))
if err != nil {
log.Fatalf("ListenAndServe error: %v", err)
}
}
func serveHTTPS() {
log.Fatal(http.ListenAndServeTLS(":443", cert, key, nil))
}
現在,如果我像這樣運行的服務器,並轉到https://example.com
那麼它不工作。
但是,如果我改變,讓我成爲HTTP這個部分:
go serveHTTP()
// go redirectHTTP()
serveHTTPS()
然後突然HTTP和HTTPS的作品。因此,如果我通過輸入http://example.com
和https://example.com
訪問我的網站,兩者都可以正常工作。
如果我註釋掉go serveHTTP()
,並嘗試HTTP重定向到HTTPS是這樣的:
// go serveHTTP()
go redirectHTTP()
serveHTTPS()
然後我得到這個在我的屏幕上:
如果我變回這樣的:
// go serveHTTP()
// go redirectHTTP()
serveHTTPS()
並且訪問不是第th頁粗略的域名,但雖然ip地址,我當然會得到警告,因爲證書不是發給ip地址,而是我使用的域名。
如果我點擊先進並添加例外,然後它堅持。
因此,實際上它是被服務的端口443,而是試圖通過域名,讓它經歷的CloudFlare DNS訪問的頁面,那麼這是行不通的。
即使我只使用CloudFlare的是 「DNS只是」 它仍然沒有關係:
或者,如果我改變爲代理,還是一樣:
我已關閉緩存,並使用開發人員模式,以便從服務器獲得「實時響應」。
所以要summerize,因爲我有過的CloudFlare我的DNS,CloudFlare的並不讓我擔任HTTPS,沒有HTTP。我需要HTTP和HTTPS而無需HTTP重定向。這真的很奇怪,我不知道如何解決這個問題。服務器通過443服務,因爲正如我所展示的,如果我嘗試通過IP地址訪問該頁面並添加安全性異常,則該頁面實際上正在服務。
我該怎麼辦?
注意的CloudFlare在「DNS只有」模式不使用HTTP(S)進行交互,如CloudFlare的將不再進行代理你的流量。默認情況下,當您僅輸入example.com時,瀏覽器將嘗試'http:// example.com',因此除非您指定'https:// example.com',否則它將失敗。因此,您應該在80上監聽,重定向到HTTPS,並且如果您希望第一個請求後的默認行爲是HTTPS(始終),請使用HSTS:https://developer.mozilla.org/en-US/docs/ Web/HTTP/Headers/Strict-Transport-Security – elithrar
謝謝,這是有用的信息! – Alex