如果没有 TLS 1.0,WCF .NET 4.0 将无法工作

Posted

技术标签:

【中文标题】如果没有 TLS 1.0,WCF .NET 4.0 将无法工作【英文标题】:WCF .NET 4.0 doesn't work without TLS 1.0 【发布时间】:2015-09-19 01:31:48 【问题描述】:

在我工作的公司中,我们有一个使用 .NET Framework 4.0 中的 SSL 在 net.tcp 上使用 WCF 的产品。在特定客户端中,出于安全原因,存在禁用 SSL 2、SSL 3 和 TLS 1 的要求。 问题是如果没有 TLS 1.0,通信就无法工作。 谁能告诉我为什么? 我使用IISCrypto 禁用了上述协议。它与示例代码一起附在此讨论中。 重现场景的步骤。

    如下图所示禁用协议

    重启电脑

    构建解决方案(查看https://github.com/juliancorrea/WCFWithSecurity)

    执行Server.exe

    执行Client.exe

    它将显示以下错误:调用者未通过服务身份验证

【问题讨论】:

你也可以看看你是否遇到了这种情况,forums.iis.net/t/1226316.aspx?Disabling+TLS+1+0+breaks+IIS+7+5 .NET 4.0 doesn't support TLS 1.1+。 TLS 1.1 和 1.2 支持were added in .NET 4.5。最好的选择是升级到 .NET 4.5。变化很小 【参考方案1】:

伙计们。

经过多次尝试,让 WCF 在没有 TLS 1.0 的情况下运行的唯一方法是启用 FIPS。

点击链接https://***.com/a/13635742/1234031 启用 FIPS。

【讨论】:

【参考方案2】:

如果您在客户端上启用了 TLS 1.1 和 1.2,请确保它们也在服务器上启用。一些早期版本的 Windows 默认没有启用 TLS 1.1 和 1.2,需要手动启用。

确保客户端和服务器都支持 TLS 1.1+ 加密,然后再次尝试连接。

【讨论】:

这不起作用,因为 .NET 4.0 不支持 TLS 1.1+

以上是关于如果没有 TLS 1.0,WCF .NET 4.0 将无法工作的主要内容,如果未能解决你的问题,请参考以下文章

WCF .net 4.0 HTTP 基本身份验证

通过配置强制在 wcf 客户端 c# 中使用 tls 1.0

.NET 4.5.1 中的 WCF 客户端:使用 WebRequest 时如何启用 TLS 1.2?

在 .NET Framework 4.0 中使用 TLS 1.2 的问题

获取 Paypal 响应 TLS 1.2 .Net Framework 4.0

asp.net core 2.0 中的 WCF - 无法为具有权限的 SSL/TLS 安全通道建立信任关系