一般来说,我从GoDaddy获得了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.
您可以转到此链接查看所有详细结果。
我想念什么?
在该线程之后,并从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:允许服务器在链中包含或拒绝根证书(也称为“信任锚”)。一些服务器包括它
问题内容: 我想知道如何在GoLang Https服务器上使用godaddy的ssl证书。 目前,我正在使用以下代码: 我还有。如何将其添加到证书链中? @Vonc的回答确实很有帮助,我只是想念最后一件事。我正在使用http.Server实例来更改ReadTimeout和WriteTimeout参数。如何使用tls做到这一点? 我之前的代码: 谢谢! 问题答案: 您可以在本节中看到完整的示例。 证
null openssl pkcs12-export-in cert1.pem-inkey privkey1.pem-out cert_and_key.p12-name certificate-cafile fullchain1.pem-caname root keytool-importKeystore-destStorePAS5W0RD123-destKeypass Pas5w0rd123-d
我有一个带有这些命令的自签名证书链,并在Apache服务器上配置了它们 但是当我尝试 我从openssl中得到一个错误 用于生成证书的命令或配置文件有问题吗? [req] distinguished_name=req_distinguished_name x509_extensions=v3_ca dirstring_type=nobmp [req_distinguished_name] comm
问题内容: 当我在Java 7中创建SSLServerSocket时,服务器正确使用了我的服务器证书和密钥。该证书是由ca的子ca颁发的。因此,从根证书到服务器证书的完整链有四个证书。完整的链位于密钥库/信任库中。 但是,当客户端连接服务器时,服务器始终只会自己发送服务器证书。这也适用于基于Java的Web服务器,例如Jetty。 因为大多数客户端仅安装了根ca证书,而没有安装两个子ca证书,所以
我收到了一个新的密钥库。jks文件用于ssl连接,以替换旧的但仍在工作的。jks密钥库文件,但我收到了“意外握手消息:serve_hello”错误。我被告知要确保密钥库包含客户端证书,所以我使用keytool将其证书导出到pem文件,然后使用openssl检查目的。结果显示 证书用途:SSL客户端:否SSL客户端CA:否SSL服务器:是SSL服务器CA:否... 然而,当我应用相同的过程来检查旧的
问题内容: 2014年11月29日更新- 这仍然是一个问题,Godaddy似乎不在乎也不会对此做任何事情。几个月前,Godaddy安全产品副总裁在这里发表了一篇博客文章,指出正在修复该问题,并提供了一种临时解决方法,但是到目前为止,没有任何变化。重要的是要注意,Godaddy的G2 CA服务器已经存在至少5年了,在那时,Godaddy尚未采取适当的步骤来解决此已知问题。提供的解决方法仅是一种解决方