在 WCF 和 .NET 4.0 中使用 TLS 1.1 或 1.2?

Posted

技术标签:

【中文标题】在 WCF 和 .NET 4.0 中使用 TLS 1.1 或 1.2?【英文标题】:Use TLS 1.1 or 1.2 in WCF and .NET 4.0? 【发布时间】:2018-07-24 23:06:45 【问题描述】:

我有一个使用 WCF 的服务器服务和一个客户端服务,它们都使用 C# 构建,带有 .NET 版本 4.0 和 Visual Studio 2010。

我在服务器上创建并安装了自签名 SSL 和 CA 证书。到目前为止,一切都很好。一切正常。客户端服务能够与来自不同机器的服务器服务进行通信。

但是,连接详细信息显示它正在使用 TLS 1.0。

有没有办法使用 DotNet 4.0 实现 TLS 1.1 或 1.2?似乎没有,但我希望有人有一种对他们有用的技术。

【问题讨论】:

tls1.2 是随 .net4.5 添加的。您是否尝试过@Vikrant 在这个问题***.com/questions/33761919/… 中提供的答案。如果您在主机上安装了 .net4.5,它将工作,而您的应用程序可以针对 .net4.0 谢谢,是的,我已经看到了类似的帖子。我的意思是有没有办法在服务器端支持它而不去 NET 4.5?似乎答案是否定的。 我不知道。微软也没有关于此事的任何官方消息。推荐的(可能是唯一的)方式是 .net4.5 您希望 .NET 4.6 与注册表项更改默认使用 TLS 1.2。更多信息在这里:github.com/TheLevelUp/pos-tls-patcher docs.microsoft.com/en-us/dotnet/framework/network-programming/… 【参考方案1】:

是的,可以在以 .NET Framework 4.0 为目标的 .NET 应用程序中使用 TLS 1.1 和 1.2,但您需要安装 .NET 4.6(您不需要在应用程序中以 4.6 为目标)。 TLS 1.2 已添加到 .NET 4.5,但如果不更改代码,将无法使用 TLS 1.2。

如果您希望现有的 .NET 4.0 代码使用 TLS 1.2,您将需要以下内容:

    安装 .NET Framework 4.6 或更高版本。这是默认情况下使用 TLS 1.2 作为协议并结合适当的 Windows 注册表项所必需的。

    设置如下.NET Framework strong cryptography registry keys:

在 32 位和 64 位版本的 Windows 上: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

在 64 位版本的 Windows 上: [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001

WOW6432Node 值由 32 位应用程序在 64 位系统上运行时使用。

欲了解更多信息,请参阅:https://github.com/TheLevelUp/pos-tls-patcher

【讨论】:

以上是关于在 WCF 和 .NET 4.0 中使用 TLS 1.1 或 1.2?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

WCF 与 3.5 和 4.0 一起使用

如何使用 .Net 4.0 REST WCF 服务?

获取 Paypal 响应 TLS 1.2 .Net Framework 4.0

WCF .net 4.0 HTTP 基本身份验证