一尘不染

具有GoDaddy证书的HTTP SSL-该服务器的证书链不完整

go

一般来说,我从GoDaddy获得了3个文件:

  1. 主证书文件
  2. 服务器私钥
  3. 捆绑文件

通过以下方式在Go服务器中配置了所有这些文件:

cert, err := tls.LoadX509KeyPair("myalcoholist.pem","myalcoholist.key")
if err != nil {
    log.Fatalf("server: loadkeys: %s", err)

}
    pem, err := ioutil.ReadFile("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")

网络服务器运行正常,当前发布在https://myalcoholist.com:443

我使用验证了我的SSL
https://www.ssllabs.com/ssltest/analyze.html?d=myalcoholist.com,它的响应是This server's certificate chain is incomplete. Grade capped to B.

您可以转到此链接查看所有详细结果。

我想念什么?


阅读 397

收藏
2020-07-02

共1个答案

一尘不染

该线程之后,并从net/http/#ListenAndServeTLS()doc中开始:

如果证书是由证书颁发机构签名的,则certFile应该是服务器证书,任何中间件和CA证书的串联。

尝试确保您也cert/myalcoholist.pem包括CA证书。

该线程使用了:

myTLSConfig := &tls.Config{
    CipherSuites: []uint16{
        tls.TLS_RSA_WITH_RC4_128_SHA,
        tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA,
        tls.TLS_RSA_WITH_AES_128_CBC_SHA,
        tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA},}
myTLSConfig.PreferServerCipherSuites = true
const myWebServerListenAddress = "0.0.0.0:5555"
myTLSWebServer := &http.Server{Addr: myWebServerListenAddress, TLSConfig: myTLSConfig, Handler: router}
if err = myTLSWebServer.ListenAndServeTLS("/home/loongson/webServerKeysV2/golangCertFile2", "/home/loongson/webServerKeysV2/adequatech.ca-comodoinstantssl-exported-privatekey-rsa-ForApache.key"); err != nil {
    panic(err)

}

与我之前的答案相比,添加密码套件是一个好主意,但是再次尝试查看传递给ListenAndServeTLS它的证书文件是否包含CA的效果更好。


果然,https://www.ssllabs.com/ssltest/analyze.html?d =
myalcoholist.com报告等级为A,警告:“链条问题:包含锚点”。
请参阅“ SSL / TLS:如何解决“链接问题:包含锚点”
”以删除该警告,但这不是错误

RFC
2119
:允许服务器在链中包含或拒绝根证书(也称为“信任锚”)。一些服务器包括它

2020-07-02