TLS証明書をテストするための単純なサーバーをセットアップしました。私はCloudFlareを通じて自分のDNSを持っています。CloudFlareはHTTPSだけを提供することはできません。HTTPSと一緒にHTTPを提供する場合にのみ動作します。
ウェブサイトを匿名のままにしたいので、ドメインを "example.com"に変更しました。私はそれが動作しません。このようなサーバを実行し、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))
}
:ここ
は、単純なサーバーのコードです。しかし、私は、私はこれにHTTPサービスを提供することができます一部変更する場合:突然その後、HTTPとHTTPSが機能の両方を
go serveHTTP()
// go redirectHTTP()
serveHTTPS()
を。だから私がhttp://example.com
とhttps://example.com
と入力して私のサイトに行くと、どちらもうまくいきます。
私はgo serveHTTP()
をコメントアウトし、このようなHTTPSにHTTPをリダイレクトしようとした場合:
// go serveHTTP()
go redirectHTTP()
serveHTTPS()
それから私は私の画面上でこれを取得する:
私はこれに戻って変更した場合:
// go serveHTTP()
// go redirectHTTP()
serveHTTPS()
ページにアクセスしていないドメイン名は大まかではあるが、IPアドレスにもかかわらず、証明書がIPアドレスに発行されず、私が使用するドメイン名になっているので警告が表示されます。
私は、高度なクリックして、例外を追加することで解決しない場合、それは動作します。
だから、実際にはそれは動作しません、CloudFlareのDNSを通過することができますつまり、ポート443で提供していますが、ドメイン名によってページにアクセスしようとしています。
するか、私はまだ同じ、プロキシに変更した場合::私は唯一のようにCloudFlareを使用する場合でも
"DNSのみ" それはまだ問題ではありません
キャッシュを無効にして、開発者モードを使用して、サーバーから「リアルタイム応答」を取得する必要があります。
だから私はCloudFlareの経由私のDNSを持っているので、CloudFlareは私がHTTPせずに、HTTPSを果たすことはできません、summerizeします。 HTTPリダイレクトなしでHTTPとHTTPSの両方が必要です。これは本当に奇妙で、私はこれをどのように修正するか分かりません。サーバーは、IPアドレスを介してページにアクセスしようとした場合に表示され、セキュリティ例外を追加するため、実際にページが提供されているため、443を使用します。
どうすればよいですか?
CloudFlareはもはやあなたのトラフィックをプロキシないであろうと「DNSのみ」モードでCloudFlareは、HTTP(S)と相互作用しないことに注意してください。ブラウザはデフォルトで 'example.com'だけを入力すると' http:// example.com'を試しますので、 'https:// example.com'を指定しないと失敗します。したがって、80でリッスンしてHTTPSにリダイレクトする必要があります.HTTPS(常に)を要求した後のデフォルトの動作を希望する場合は、https://developer.mozilla.org/en-US/docs/を使用してください。 Web/HTTP/Headers/Strict-Transport-Security – elithrar
ありがとうございました! – Alex