Azure SQL 數據庫錯誤:v12 升級後TLS 握手失敗
問題:
以下升級到Azure SQL 資料庫v12 時,使用者遇到TLS 握手失敗,並顯示錯誤訊息:「TLS 握手失敗:x509:憑證對於tr12.northcentralus1-a.worker.database.windows.net、*.tr12.northcentralus1 有效- a.worker.database.windows.net,而不是[伺服器名稱].database.windows.net。連接字串。但是,正常運作的本機環境與發生故障的 Azure Web App 之間保持一致。
解決方案:
解決方案在於修改連線參數:
將 TrustServerCertificate 設為 True。
新增參數 hostNameInCertificate,值為 *.database.windows.net。說明:
TrustServerCertificate 參數指示是否信任AertE資料庫服務提供的伺服器憑證。將其設為 True 允許連接繼續,即使沒有為連接字串中指定的特定伺服器名稱頒發憑證。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;
如果伺服器憑證包含指定的主機名,hostNameInCertificate 參數允許連線成功。這解決了憑證對於與指定伺服器名稱不同的主機名稱有效的問題。
Azure 入口網站設定:值得注意的是,Azure 入口網站建議將 TrustServerCertificate 設為 False 並省略 hostNameInCertificate 參數。然而,這個配置並沒有解決問題。
以上是為什麼 Azure SQL 資料庫 v12 升級後會引發 TLS 握手失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!