首頁 >後端開發 >Golang >為什麼我在 Go 中使用 GoDaddy 的 SSL 憑證時收到「不完整的憑證鏈」錯誤?

為什麼我在 Go 中使用 GoDaddy 的 SSL 憑證時收到「不完整的憑證鏈」錯誤?

Linda Hamilton
Linda Hamilton原創
2024-10-27 08:46:30334瀏覽

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