TLS1.2是否有.NET实现?

TLS1.2是否有.NET实现?,.net,ssl,.net,Ssl,由于我刚刚发现RFC 5425需要使用TLS 1.2,而.NET还不支持它,我想知道是否有任何TLS 1.2协议的实现,可能是开源的,如RFC 5246中定义的那样。您可以通过以下方式在IIS中启用TLS 1.2。如果您有一个在IIS上运行的基于ASP.NET的应用程序,我认为这就足够了,尽管它看起来并不能真正满足您的需要。最新版本(与Windows 7捆绑在一起)实现了TLS 1.2,如果您使用的是较旧版本的.NET Framework,然后,我们的客户机和服务器组件中都提供了对TLS 1.2

由于我刚刚发现RFC 5425需要使用TLS 1.2,而.NET还不支持它,我想知道是否有任何TLS 1.2协议的实现,可能是开源的,如RFC 5246中定义的那样。

您可以通过以下方式在IIS中启用TLS 1.2。如果您有一个在IIS上运行的基于ASP.NET的应用程序,我认为这就足够了,尽管它看起来并不能真正满足您的需要。

最新版本(与Windows 7捆绑在一起)实现了TLS 1.2,如果您使用的是较旧版本的.NET Framework,然后,我们的客户机和服务器组件中都提供了对TLS 1.2的支持。SecureBackbox包含所有算法的自己的实现,因此使用基于.NET的框架的哪个版本(包括.NET CF)无关紧要—在所有情况下,您都将使用TLS 1.2和最新添加的版本


请注意,SecureBackbox不会神奇地将TLS1.2添加到框架类中——相反,您需要显式地使用SecureBackbox类和组件

刚刚发现.Net Framework 4.5现在支持TLSv1.2

是的,但您必须在运行时手动打开TLS 1.2

您的客户端正在使用TLS 1.2,这是加密协议的最新版本


开箱即用

您的客户正在使用 TLS 1.0,非常旧,可能易受影响 到野兽攻击,并且没有最好的密码 这里有套房。添加如AES-GCM和SHA256 要替换MD5-SHA-1,TLS 1.0客户端无法使用 以及许多更现代的密码套件。
您可以使用SchUseStrongCrypto注册表设置,要求所有.NET应用程序默认使用TLS 1.2而不是1.0

Windows Registry Editor Version 5.00

[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
只需下载并运行它。它将向.NET framework注册表添加必要的项。 你可以在这里获得更多信息。在.NET 4.5至4.5.2中搜索“选项2”

reg文件将以下内容附加到注册表:

[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
这是页面的一部分,在页面出现故障时非常有用:

" ..通过将以下两个注册表项中的SchUseStrongCrypto DWORD值设置为1,默认情况下启用TLS 1.2,而不修改源代码,如果它们不存在,则创建它们:“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319”和“HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework\v4.0.30319”“。尽管这些注册表项中的版本号为4.0.30319,.NET 4.5、4.5.1和4.5.2框架也使用这些值。但是,默认情况下,这些注册表项将在该系统上所有已安装的.NET 4.0、4.5、4.5.1和4.5.2应用程序中启用TLS 1.2。因此,建议在将此更改部署到生产服务器之前对其进行测试。这也可以作为注册表导入文件提供。但是,这些注册表值不会影响设置System.NET.ServicePointManager.SecurityProtocol值的.NET应用程序。 "


.NET Framework 4.6默认使用TLS 1.2

Windows Registry Editor Version 5.00

[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

此外,只有主机应用程序应该在.NET 4.6中,引用的库可能会保留在旧版本中。

我通过切换到最新的.NET Framework解决了我的问题。因此,您的目标框架设置了安全协议

当您在Web.config中有此选项时

<system.web>
  <httpRuntime targetFramework="4.5"/>
</system.web>
当您在Web.config中有此选项时

<system.web>
  <httpRuntime targetFramework="4.6.1"/>
</system.web>
如前所述,您可以添加这一行

ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;

很抱歉,这不适用于我。我正在编写一个用于运行Syslog协议的应用程序,该协议远离ASP.NET并使用常规套接字编程。不幸的是,我需要一个等效于SslStream的类来为我提供TLS 1.2服务:(此链接现在是403,但新的URL似乎是开源项目,并不一定意味着您需要打开所有代码。我正确地认为,这将满足PCI DSS 3.1的SSL要求?这将非常有用,因为有许多XP派生的操作系统仍在Microsoft支持下,但无法运行。)n.Net Framework 4.5。@user1069816在我们仔细分析PCI DSS 3.1的要求之前,我还没有准备好正式确认一致性。但总体而言,SecureBackbox完全实现了TLS 1.2,并考虑了最近与安全相关的发现,并采取了相应的解决办法。@user1069816我们已经审查了PCI DSS 3.1。PCI-DSS 3.1要求所有兼容的环境都不支持SSL(2.0和3.0)以及最迟于2016年6月30日之前的TLS 1.0版本的协议。SBB可以轻松实现这一点,它提供对TLS 1.1和1.2以及所有现代密码套件的全面支持。@user1069816由于SecureBackbox使用自己的加密和SSL/TLS引擎,因此它不依赖于opera提供的相关功能的细节TIN系统或.NETFramework。即,您可以通过迁移WiAPI或.NET2.0软件产品来确保您的老XP机器保持PCI DSS兼容。关于如何在.NET中使用这个指南,@ SoFion不会很漂亮,因为ScNeNe.com是一个C++例子,一些非常有用的注释,可以指定SE。通过app.exe.config中的设置实现curityProtocol?这是否也取决于应用程序运行的操作系统/服务器,因为实际的HTTP流量将在该操作系统/服务器上创建/接收?谢谢。非常有用。仅供参考,这在Windows 2012 Server上有效。我被告知Windows 2008不支持TLS1.2。您应该能够使用TLS1.2在2008Svr上。可能需要安装dotNet 4.5 framework。请参阅:Microsoft应该在其安全更新中真正更新此值。我无法相信默认值是启用SSL v3并禁用TLS 1.2,并且修复程序是一个简单的注册表设置。Net framework 4.0不支持TLS 1.1+,但framework 4.5支持:fwk 4.0:fwk 4.5:有now(2016年9月)注册中心有一系列不同的框架版本(4.0.30319、4.5、,
ServicePointManager.SecurityProtocol = Tls12 | Tls11 | Tls
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;