首頁 > 後端開發 > Golang > 為什麼我的自簽名憑證 TLS 連線失敗以及如何修復?

為什麼我的自簽名憑證 TLS 連線失敗以及如何修復?

Mary-Kate Olsen
發布: 2024-12-19 15:58:17
原創
751 人瀏覽過

Why Does My TLS Connection Fail with a Self-Signed Certificate and How Can I Fix It?

使用自簽名憑證排除 TLS 連線問題

問題: 使用自簽章伺服器建立 TLS連線憑證失敗並顯示錯誤,指示未知憑證

相關程式碼:
客戶端:

CA_Pool := x509.NewCertPool()
severCert, err := ioutil.ReadFile("./cert.pem")
CA_Pool.AppendCertsFromPEM(severCert)

config := tls.Config{RootCAs: CA_Pool}
登入後複製

伺服器:

cert, err := tls.LoadX509KeyPair("./cert.pem", "./key.pem")
config := tls.Config{Certificates: []tls.Certificate{cert}}
登入後複製

錯誤訊息:

client: dial: x509: certificate signed by unknown authority 
(possibly because of "x509: invalid signature: parent certificate
cannot sign this kind of certificate" while trying to verify 
candidate authority certificate "serial:0")
登入後複製

根本原因:產生的自簽名憑證沒有設定IsCA 標誌,表示它不是中間憑證或根證書。因此,用戶端的 CA 池無法將自簽章憑證驗證為有效的核發機關。

解決方案:要修正此問題,請確保 IsCA 標誌為使用 x509.CreateCertificate 產生自簽章憑證時設定。正確的憑證產生程式碼如下:

certTemplate := &x509.Certificate{
    IsCA: true,
    KeyUsage: x509.KeyUsageCertSign,
    // ... other certificate parameters
}
登入後複製
透過設定IsCA:true,自簽名憑證可以正常充當憑證授權單位,使用戶端能夠驗證其真實性。

以上是為什麼我的自簽名憑證 TLS 連線失敗以及如何修復?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板