首页  >  文章  >  后端开发  >  为什么我在 Go 中使用 GoDaddy 的 SSL 证书时收到“不完整的证书链”错误?

为什么我在 Go 中使用 GoDaddy 的 SSL 证书时收到“不完整的证书链”错误?

Linda Hamilton
Linda Hamilton原创
2024-10-27 08:46:30222浏览

Why Am I Getting an

SSL 问题:GoDaddy 证书的证书链不完整

使用 GoDaddy 的 SSL 证书设置 HTTPS Web 服务器时,您可能会遇到以下错误“该服务器的证书链不完整。”这可能是由于 Go 代码中的配置错误造成的。

解决方案:

要解决此问题,请确保 ListenAndServeTLS() 中使用的证书文件包含完整的证书证书链。这包括服务器的证书、中间证书(如果有)和根 CA 证书。

在您的代码中,您当前正在加载主证书文件和私钥,但缺少捆绑文件,通常包含中间证书。

将以下行:

err := srv.ListenAndServeTLS("cert/myalcoholist.pem","cert/myalcoholist.key")

替换为:

cert, err := tls.LoadX509KeyPair("cert/myalcoholist.pem","cert/myalcoholist.key")
if err != nil {
    log.Fatalf("server: loadkeys: %s", err)
}
pem, err := ioutil.ReadFile("cert/cert/sf_bundle-g2-g1.crt")
if err != nil {
    log.Fatalf("Failed to read client certificate authority: %v", err)
}
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: "myalcoholist.com:443",
    Handler: n,
    ReadTimeout: time.Duration(5) * time.Second,
    WriteTimeout: time.Duration(5) * time.Second,
    TLSConfig: tlsConfig,
}
err := srv.ListenAndServeTLS("cert/myalcoholist.pem","cert/myalcoholist.key")

这将加载完整的证书链并配置相应的 TLSConfig。

其他提示:

  • 考虑在 TLSConfig 中设置密码套件以提高安全性。
  • 进行更改后,重新测试您的 SSL 证书使用 https://www.ssllabs.com 来验证证书等级的提高。

以上是为什么我在 Go 中使用 GoDaddy 的 SSL 证书时收到“不完整的证书链”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn