v12 升級後Azure SQL 資料庫TLS 握手錯誤
Azure SQL 資料庫實例升級到v12 後,您可能會遇到TLS 握手錯誤。當伺服器提供的憑證與用戶端連線字串中指定的主機名稱不符時,就會發生此錯誤。
錯誤詳細資料
錯誤訊息通常表示憑證對於用戶端連線中使用的主機名稱以外的主機名稱有效。例如:
TLS Handshake failed: x509: certificate is valid for tr12.northcentralus1-a.worker.database.windows.net, *.tr12.northcentralus1-a.worker.database.windows.net, not [server-name].database.windows.net
解決方案
解決此問題問題,更新客戶端連接字串以包含以下內容參數:
更新的連接字串
更新的連接字串應如下所示:
Server=[server-name].database.windows.net;Port=1433;Database=[dbname];User ID=[user];Password=[pass];Trusted_Connection=False;Encrypt=True;Connection Timeout=30;TrustServerCertificate=True;hostNameInCertificate=*.database.windows.net;
說明
在先前版本的Azure SQL 資料庫中,伺服器的憑證始終始終匹配客戶端連接字串中指定的主機名稱。然而,在 v12 中,這一點不再得到保證。透過將 TrustServerCertificate 設定為 True 並在 hostNameInCertificate 中指定正確的主機名,您可以指示用戶端接受憑證並正確建立連線。
注意:
雖然Azure 入口網站建議將 TrustServerCertificate 設定為 False,這在某些情況下可能會導致 TLS 握手錯誤。如果遇到這些錯誤,請將 TrustServerCertificate 設為 True 並將 hostNameInCertificate 新增至連線字串應該可以解決問題。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3