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 之间保持一致。
解决方案:
解决方案在于修改连接参数:
最终连接字符串:
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;
说明:
TrustServerCertificate 参数指示是否信任 Azure SQL 数据库服务提供的服务器证书。将其设置为 True 允许连接继续,即使没有为连接字符串中指定的特定服务器名称颁发证书。
如果服务器证书包含指定的主机名,hostNameInCertificate 参数允许连接成功。这解决了证书对于与指定服务器名称不同的主机名有效的问题。
Azure 门户配置:
值得注意的是,Azure 门户建议将 TrustServerCertificate 设置为 False 并省略 hostNameInCertificate 参数。然而,这个配置并没有解决问题。
以上是为什么 Azure SQL 数据库 v12 升级后会引发 TLS 握手失败?的详细内容。更多信息请关注PHP中文网其他相关文章!