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 添加到连接字符串应该可以解决问题。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3