[英]Intermediate certificate doesn't match private key with Go
我正在嘗試構建將運行https應用程序的Go(golang)程序。
我真的遇到SSL中間證書的麻煩,不知道問題出在哪里,是我的證書還是Go語言應用程序提供的。
因此,我從SSL CA提供者那里獲得了兩個證書文件:服務器證書和中間證書。
因此,我試圖從我的go代碼中加載這些證書,如下所示:
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世界中的私鑰匹配?
或不必。 並且如果不需要,那么如何在沒有私鑰的情況下加載證書?
我應該回到我的CA並告訴他們中間證書為何與私鑰不匹配?
您沒有中間證書的密鑰,只有服務器證書的密鑰。 請注意,我對Go不太了解,但是根據Golang SSL TCP套接字證書配置,您只需將中間證書包含在與服務器證書相同的PEM文件中即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.