中间证书与 Go 的私钥不匹配
Intermediate certificate doesn't match private key with Go
我正在尝试构建一个 运行 https 应用程序的 Go (golang) 程序。
我真的遇到了 SSL 中间证书的问题,不知道问题出在哪里,是我的证书还是 Go 语言应用程序。
因此,我从我的 SSL CA 提供商处获得了两个证书文件:服务器证书和中间证书。
所以,我正在尝试从我的代码中加载这些证书,如下所示:
tlsConfig := &tls.Config{}
tlsConfig.Certificates = make([]tls.Certificate, 2)
var err error
tlsConfig.Certificates[0], err = tls.LoadX509KeyPair(serverCertificate, privateKey)
if err != nil {
log.Fatal(err)
}
tlsConfig.Certificates[1], err = tls.LoadX509KeyPair(intermeddiateCertificate, privateKey)
if err != nil {
log.Fatal(err)
}
tlsConfig.BuildNameToCertificate()
server := &http.Server{
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
TLSConfig: tlsConfig,
Addr: ":443,
}
app.RunServer(server)
此行第二次加载证书时代码失败
tls.LoadX509KeyPair(intermeddiateCertificate, privateKey)
错误是证书与私钥不匹配。
中间证书是否应该与 SSL/TLS 世界中的私钥相匹配?
或者不必。
如果不需要,那么如何在没有私钥的情况下加载证书?
我是否应该 return 返回我的 CA 并告诉他们为什么中间证书与私钥不匹配?
您没有中间证书的密钥,只有服务器证书的密钥。请注意,我不太了解 Go,但根据 ,您只需将中间证书包含在与服务器证书相同的 PEM 文件中。
我正在尝试构建一个 运行 https 应用程序的 Go (golang) 程序。
我真的遇到了 SSL 中间证书的问题,不知道问题出在哪里,是我的证书还是 Go 语言应用程序。
因此,我从我的 SSL CA 提供商处获得了两个证书文件:服务器证书和中间证书。
所以,我正在尝试从我的代码中加载这些证书,如下所示:
tlsConfig := &tls.Config{}
tlsConfig.Certificates = make([]tls.Certificate, 2)
var err error
tlsConfig.Certificates[0], err = tls.LoadX509KeyPair(serverCertificate, privateKey)
if err != nil {
log.Fatal(err)
}
tlsConfig.Certificates[1], err = tls.LoadX509KeyPair(intermeddiateCertificate, privateKey)
if err != nil {
log.Fatal(err)
}
tlsConfig.BuildNameToCertificate()
server := &http.Server{
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
TLSConfig: tlsConfig,
Addr: ":443,
}
app.RunServer(server)
此行第二次加载证书时代码失败
tls.LoadX509KeyPair(intermeddiateCertificate, privateKey)
错误是证书与私钥不匹配。
中间证书是否应该与 SSL/TLS 世界中的私钥相匹配?
或者不必。 如果不需要,那么如何在没有私钥的情况下加载证书?
我是否应该 return 返回我的 CA 并告诉他们为什么中间证书与私钥不匹配?
您没有中间证书的密钥,只有服务器证书的密钥。请注意,我不太了解 Go,但根据