2015-06-08 48 views
3

我尝试从HTTP切换到HTTPS:切换到HTTPS在Beego

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中工作?

+3

确定'cert.pem'和'key.pem'文件是正确的(当前工作目录)文件夹?尝试传递绝对路径。 – icza

+0

@icza,是的,它是在同一个文件夹中。即使尝试通过绝对路径它给出相同的错误。 –

回答

3

该错误表示key.pem文件无法解析(可能无效或无权读取其内容)。确保文件有效并且设置了足够的权限。

出于测试目的,请使用crypto/tls包中的generate_cert.go生成有效的cert.pemkey.pem文件。

要生成,运行以下命令(窗口):

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" 
+0

谢谢你这个作品。 –