症状
假设你正在使用 Microsoft SQL Server 中的传输层安全(TLS)协议版本1.2。 当用于加密数据库镜像、可用性组和 service broker 的终结点通信的证书使用 MD5 哈希算法时,通信将失败。 此外,你还会在 SQL Server 错误日志中收到以下错误消息:
连接握手失败。 操作系统调用失败:(80090331)0x80090331 (客户端和服务器无法通信,因为它们不具有通用算法。)。 状态58。 "。
此外,Windows 日志报告以下 Schannel 错误:
生成了一个严重警报,并已发送到远程终结点。 这可能会导致连接终止。 TLS 协议定义的严重错误代码是40。 Windows SChannel 错误状态为1205。
原因
出现此问题的原因是 TLS 1.2 不支持 MD5 作为签名哈希算法。
解决方案
根据当前安全最佳做法和标准,建议你切换到用于 SQL Server 终结点加密的证书的非 MD5 签名哈希。以下 Microsoft 知识库文章提供了支持 TLS 1.2 的固定版本列表:
3135244 适用于 Microsoft SQL Server 的 TLS 1.2 支持
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语 。