首页 >后端开发 >Golang >为什么 Azure SQL 数据库 v12 升级后会引发 TLS 握手失败?

为什么 Azure SQL 数据库 v12 升级后会引发 TLS 握手失败?

DDD
DDD原创
2024-10-27 01:15:30417浏览

 Why Does Azure SQL Database v12 Throw a TLS Handshake Failure After Upgrade?

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 之间保持一致。

解决方案:

解决方案在于修改连接参数:

  1. 将 TrustServerCertificate 设置为 True。
  2. 添加参数 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;

说明:

TrustServerCertificate 参数指示是否信任 Azure SQL 数据库服务提供的服务器证书。将其设置为 True 允许连接继续,即使没有为连接字符串中指定的特定服务器名称颁发证书。

如果服务器证书包含指定的主机名,hostNameInCertificate 参数允许连接成功。这解决了证书对于与指定服务器名称不同的主机名有效的问题。

Azure 门户配置:

值得注意的是,Azure 门户建议将 TrustServerCertificate 设置为 False 并省略 hostNameInCertificate 参数。然而,这个配置并没有解决问题。

以上是为什么 Azure SQL 数据库 v12 升级后会引发 TLS 握手失败?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn