【问题标题】:Sqlconnection still requires ssl but "encrypt=false"Sqlconnection 仍然需要 ssl 但 "encrypt=false"
【发布时间】:2017-04-14 21:50:11
【问题描述】:

我有一个用 C#(框架 4.6)编写的应用程序,它使用 System.Data.SqlClient 与 SQL Server 2014 通信。此应用程序不使用 SSL 连接到 SQL。

与 SQL Server 的连接失败并出现以下错误:

已建立连接但...协议错误...正在打开 会话(SSL 提供程序错误 0)

在服务器上,我观察到以下事件:Schannel 错误 36874 和 36888(从远程客户端应用程序接收到 TLS1.2 连接请求,但服务器不支持客户端应用程序支持的任何密码套件。 )

我尝试在连接字符串中强制encrypt=false 禁用任何 SSL 选项,但这并不能解决问题。

此错误不会出现在同一网络的所有计算机上。

提前感谢您的帮助。

亲切的问候,

男人

【问题讨论】:

  • 无论客户端设置如何,服务器都可以强制使用 SSL 连接。只需浏览文档,看看其中是否适用于您。

标签: c# sql sql-server ssl


【解决方案1】:

我们已经找到了解决这个问题的方法。我们需要在注册表中添加新闻键。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000001
"Enabled"=dword:00000000

重启电脑后,问题解决了,但我们不明白为什么有些电脑会用 tls 1.2 连接

【讨论】:

    【解决方案2】:

    您可能需要检查打开与 SQL 服务器连接的计算机的注册表设置。有一个鲜为人知的编辑可以强制所有连接为 TLS 1.2。

    Registry information

    修复的要点是检查这些设置:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

    如果您想启用它,请按原样使用它。如果您希望禁用它们,您可以将 设置为 0 或删除键。

    【讨论】:

    • 感谢您的提示。这些键不存在。当不需要安全连接时,似乎是正确的。通过使用 0 值创建键,错误仍然存​​在。
    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2013-12-23
    • 2011-02-06
    • 2023-03-13
    • 1970-01-01
    • 2014-11-18
    • 2015-09-06
    相关资源
    最近更新 更多