首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板