」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 將 Azure SQL 資料庫升級到 v12 後,為什麼會出現 TLS 握手錯誤?

將 Azure SQL 資料庫升級到 v12 後,為什麼會出現 TLS 握手錯誤?

發佈於2024-12-21
瀏覽:746

Why am I getting a TLS Handshake error after upgrading my Azure SQL Database to v12?

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

解決方案

解決此問題問題,更新客戶端連接字串以包含以下內容參數:

  • TrustServerCertificate=True: 此參數告訴客戶端信任伺服器的證書,即使它與主機名稱不符。
  • hostNameInCertificate=*.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