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 回答