首頁 > 後端開發 > Golang > 將 Azure SQL 資料庫升級到 v12 後,為什麼會出現 TLS 握手錯誤?

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

Linda Hamilton
發布: 2024-10-27 07:29:03
原創
841 人瀏覽過

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 新增至連線字串應該可以解決問題。

以上是將 Azure SQL 資料庫升級到 v12 後,為什麼會出現 TLS 握手錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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