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 新增至連線字串應該可以解決問題。
以上是將 Azure SQL 資料庫升級到 v12 後,為什麼會出現 TLS 握手錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!