3

HTTP から HTTPS に切り替えようとしています。

func handler(w http.ResponseWriter, req *http.Request) {
    w.Header().Set("Content-Type", "text/plain")
    w.Write([]byte("This is an example server.\n"))
}

func main() {
    http.HandleFunc("/", handler)
    log.Printf("About to listen on 8080. Go to https://127.0.0.1:8080/")
    err := http.ListenAndServeTLS(":8080", "cert.pem", "key.pem", nil)
    if err != nil {
        log.Fatal(err)
    }
}

そして、次のエラーが表示されます。

crypto/tls: failed to parse key PEM data

アプリケーションは現在 HTTP モードで実行されており、HTTPS モードで実行したいと考えています。

HTTPSで機能させる方法を誰かが提案できますか?

4

1 に答える 1

3

このエラーは、key.pemファイルを解析できないことを示しています (ファイルが無効であるか、コンテンツを読み取る権限がない可能性があります)。ファイルが有効で、十分な権限が設定されていることを確認してください。

テスト目的でgenerate_cert.gocrypto/tlsパッケージ内の を使用して有効なファイルを生成cert.pemkey.pemます。

生成するには、次のコマンドを実行します (windows):

go run %GOROOT%/src/crypto/tls/generate_cert.go -host="127.0.0.1"

Linux:

go run $GOROOT/src/crypto/tls/generate_cert.go -host="127.0.0.1"
于 2015-06-09T05:33:38.670 に答える