首頁 > 後端開發 > Golang > 主體

為什麼 My Go TLS 撥號失敗並顯示「x509:憑證依賴舊版通用名稱欄位」?

DDD
發布: 2024-10-28 08:13:02
原創
681 人瀏覽過

 Why Does My Go TLS Dial Fail with

Go TLS 撥號:無法連線依賴舊版通用名稱欄位的X509 憑證

嘗試連線到伺服器時會出現此問題在Golang中使用TLS,伺服器的憑證依賴舊版通用名稱(CN) 欄位進行識別。標準 Golang 函式庫會檢查主題備用名稱 (SAN)。

原因:

預設情況下,Golang 執行階段會以最佳方式驗證伺服器憑證是否存在 SAN安全實務。如果憑證缺少SAN,而是依賴CN 欄位進行標識,Go 運行時將拒絕連接,並顯示錯誤訊息:

failed to connect: x509: certificate relies on legacy Common Name field, use SANs or temporarily enable Common Name matching with GODEBUG=x509ignoreCN=0
登入後複製

解決方案:

要解決此問題,您有兩個選擇:

1。修改伺服器憑證以使用 SAN:

重新產生伺服器憑證以包含與用戶端將用於連線的主機名稱或 IP 位址相對應的 SAN。這涉及使用憑證授權單位 (CA) 和 OpenSSL 命令來建立具有適當 SAN 的憑證。

2.暫時停用CN 符合:

您可以透過設定GODEBUG 環境變數來暫時停用Go 執行階段對SAN 的檢查,如下所示:

GODEBUG=x509ignoreCN=0 go run your_program.go
登入後複製

注意:停用CN 匹配不是建議的解決方案,因為它允許接受具有CN 但不接受SAN 的證書,從而降低了TLS 連接的安全性。

以上是為什麼 My Go TLS 撥號失敗並顯示「x509:憑證依賴舊版通用名稱欄位」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!