在 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?