【问题标题】:ASP.NET 4.5 The client and server cannot communicate, because they do not possess a common algorithmASP.NET 4.5 客户端和服务器无法通信,因为它们没有共同的算法
【发布时间】:2017-10-15 19:43:50
【问题描述】:

我使用 ASP.NET 创建了一个项目。当我在本地测试时,一切都很好。当我推送到服务器时,我在进行数据库调用的任何页面上都会收到此错误:

客户端和服务器无法通信,因为它们没有共同的算法

我尝试使用这行代码在 Global.asax 文件中将我的 TLS 设置为 1.2:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

但这没有任何作用。

这里有更多错误详情:

与服务器成功建立连接,但在登录过程中出现错误。 (提供者:SSL Provider,错误:0 - 客户端和服务器无法通信,因为它们没有共同的算法。)]

【问题讨论】:

  • 您是否在服务器上安装了证书树,并在 IIS 中授权您的应用程序?
  • 您连接的服务器使用什么类型的安全连接?另外,请提供一些失败的示例代码。
  • 实体框架代码失败 View(db.Data.ToList());
  • @Greg 我相信我们会这样做。

标签: c# asp.net ssl tls1.2


【解决方案1】:

大家好,最近我遇到了这些类似的问题,经过更长时间的研究后解决了,请按照以下步骤操作。 我们需要启用 TSL1.0,TSL1.1,SSL2 REGISTRY.BELOW R THE STEPS.

1.通过单击开始和运行启动注册表编辑器。在“运行”字段中输入“regedit”(不带引号)。

2.在注册表树的顶部突出显示计算机。首先通过单击文件然后单击导出来备份注册表。选择一个文件位置来保存注册表文件。

注意:您将编辑注册表。如果操作不当,可能会对您的计算机造成不利影响,因此强烈建议您进行备份。

3.浏览到以下注册表项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

右键单击 Protocols 文件夹,然后从下拉菜单中选择 New,然后选择 Key。这将创建新文件夹。将此文件夹重命名为 TLS 1.2。

4.右键单击 TLS 1.2 密钥并在其下方添加两个新密钥。

两个新键是: 客户 服务器

5.右键单击客户端键并从下拉列表中选择新建,然后选择 DWORD(32 位)值。

6.右键单击名称启用并从下拉菜单中选择修改...。

7.确保值数据字段设置为 0,并且基数为十六进制。点击确定。

8.对服务器密钥也重复步骤 5 到 7。

希望我能帮上忙。

【讨论】:

  • 不建议启用 TLS 1.0,并且禁止用于 PCI 合规性,已知 TLS 1.0 不安全。
【解决方案2】:

我找到了解决此问题的方法 将此添加到您的 webconfig 中,将解决问题

<appSettings>
    <add key="AppContext.SetSwitch:Switch.System.Net.DontEnableSchUseStrongCrypto" value="false" />
    <add key="AppContext.SetSwitch:Switch.System.Net.DontEnableSystemDefaultTlsVersions" value="false" />
</appSettings>

Cannot set app to use system default TLS version by adding appcontext settings in web.config

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多