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中文網其他相關文章!