繁体   English   中英

Windows中的TLS 1.2通信是否需要符合FIPS要求?

[英]Is FIPS compliance REQUIRED for TLS 1.2 communication in Windows?

好的,这一直是一个持续存在的问题。 我已经进行了几个月的实验,到目前为止,我可以使我的应用程序与Windows Server 2008 R2进行通信的唯一方法是启用组策略中“使用FIPS兼容算法进行加密,哈希和签名”设置客户端和服务器计算机。 一旦启用(在客户端和服务器的注册表中启用TLS 1.2,并禁用TLS 1.0),它便可以工作。

但是,我的困境是我不需要 FIPS合规性,并且基于Microsoft的建议以及我必须升级和更改大量代码才能使我的所有应用程序都符合FIPS的事实(更不用说不确定性了)是否所有正在使用的第三方应用程序都将符合客户端要求),我希望有一个更好的解决方案。

作为记录,我尝试交流的应用程序是MS Web Deploy 3.6,通过HTTPS / IIS的.NET Remoting和ClickOnce部署。

我突然意识到,当我在服务器上启用TLS 1.2 而未启用FIPS模式时, 浏览器便可以与之通信 因此,很明显,没有这种设置,有些方法可以完成工作,但我只是没有找到它。

我看了这个答案这个答案 ,但这似乎是无法在配置文件中设置的低级设置,因此在我的3种情况中,至少有2种无法使用(它可能与.NET兼容)远程处理,我还没有尝试过)。 但是缺少示例令人震惊-也许这就是答案,但我不知道如何使用它。

可以接受的解决方案是仅对某些用户启用FIPS遵从性,因此我可以分别配置每个应用程序,但是由于我只能找到机器范围的设置,所以我很茫然。

我想出的另一个潜在解决方案是使用VPN连接到服务器,因此我的应用程序不需要加密协议即可通信。 但是,由于我使用的是Windows Server 2008 R2 Web Edition(不支持VPN),因此我坚持使用第三方解决方案(希望它将支持TLS 1.2)或在新的OS上重建服务器。

我的问题特别是:如何像MS Web Deploy 3.6这样的已编译.NET应用程序通过TLS 1.2 进行通信, 而又 不像浏览器那样启用FIPS遵从性?

我的回答基于来自以下文章的信息: .NET Framework的传输层安全性(TLS)最佳实践,并且似乎依赖于安装.NET 4.7或更高版本,而最初提出此问题时并不存在。

我的测试是在2016年服务器上完成的,.NET 4.7既充当客户端又充当服务器,并且与自身通信。 客户端EXE的目标是4.7之前的.NET版本。 在这种情况下,如果注册表中不存在以下值,则默认为0。

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

添加这些值后,我不再需要启用FIPS才能使TLS 1.2正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM