【发布时间】:2019-05-07 19:45:42
【问题描述】:
我从 Godaddy 为网站购买了 SSL 证书。 我在服务器中添加了文件并运行服务,它只是返回一个错误:
在证书输入中找不到任何 PEM 数据
我使用 cat 生成了一个包含所有文件的 server.pem 文件,甚至添加了一个他们为 G2 证书链提供的 godaddy pem 中间 pem 文件,什么都没有。
cat generated-private-key.txt > server.pem
cat 678f65b8a7391017.crt >> server.pem
cat gd_bundle-g2-g1.crt >> server.pem
cat gdig2.crt.pem >> server.pem
使用自签名证书有效,但在现实世界中当然不可用。
代码尝试 1:
log.Fatal(http.ListenAndServeTLS(fmt.Sprintf("%s:%d", configuration.HttpServer.Address, configuration.HttpServer.Port), "server.pem", "generated-private-key.txt", router))
代码尝试 2:
cert, err := tls.LoadX509KeyPair("server.pem","generated-private-key.txt")
if err != nil {
log.Fatalf("server: loadkeys: %s", err)
}
pem, err := ioutil.ReadFile("gd_bundle-g2-g1.crt")
if err != nil {
log.Fatalf("Failed to read client certificate authority: %v", err)
}
certpool := x509.NewCertPool()
if !certpool.AppendCertsFromPEM(pem) {
log.Fatalf("Can't parse client certificate authority")
}
tlsConfig := &tls.Config{
ClientCAs: certpool,
Certificates: []tls.Certificate{cert},
}
srv := &http.Server{
Addr: fmt.Sprintf("%s:%d", configuration.HttpServer.Address, configuration.HttpServer.Port),
Handler: router,
ReadTimeout: time.Duration(5) * time.Second,
WriteTimeout: time.Duration(5) * time.Second,
TLSConfig: tlsConfig,
}
log.Fatal(srv.ListenAndServeTLS("678f65b8a7391017.crt","generated-private-key.txt"))
两者都给出相同的错误。
我需要启动并运行它,因为我已经完成了后端,但现在我只想为生产环境启用 HTTPS。
【问题讨论】:
-
看起来您正在使用您的私钥内容开始您的证书。尝试跳过证书创建脚本的第一行并重试。
标签: ssl go ssl-certificate x509certificate