我需要使用TLS 1.2从我的.NET Web服务连接到另一个要强制TLS 1.2的服务。我发现一个资源,说.NET 4.6默认使用TLS 1.2,这听起来像最简单的解决方案。我更新了服务器上的.NET框架并重新启动。在IIS中,我尝试使用.NET 4.6创建应用程序池,但4.0是唯一的选择。然后,我发现有人说它仍然会说4.0,因为4.6是.NET 4.0的“就地”更新。所以我想也许我完成了。然而,在我出于无关原因得到的错误页面上,它说Microsoft .NET Framework Version:4.0.30319
因此看起来我没有成功升级。关于如何确保我的应用程序池使用.NET 4.6或更一般地如何启用TLS 1.2的指针?更新.NET Web服务以使用TLS 1.2
回答
我们实际上刚刚将.NET Web服务升级到4.6以允许TLS 1.2。
阿尔乔姆所说的是我们所做的第一步。我们将Web服务的框架重新编译为4.6,我们尝试更改注册表项以启用TLS 1.2,但这种方式无效:连接仍在TLS 1.0中。此外,我们不希望在机器上禁用SLL 3.0,TLS 1.0或TLS 1.1:其他Web服务可能会使用此功能;我们回滚了注册表中的更改。
我们实际上改变了Web.Config文件来告诉IIS:“嘿,请运行我的4.6”。
下面是我们在web.config +反编译,添加在.NET 4.6的变化:
<system.web>
<compilation targetFramework="4.6"/> <!-- Changed framework 4.0 to 4.6 -->
<!--Added this httpRuntime -->
<httpRuntime targetFramework="4.6" />
<authentication mode="Windows"/>
<pages controlRenderingCompatibilityVersion="4.0"/>
</system.web>
而改为TLS 1.2的连接,因为IIS现在运行在4.6 Web服务(明确地说) 4.6默认使用TLS 1.2。
下面是我们用于研究的文档:[HTTPRuntime](https:// blogs .msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework /),[RenderingCompatibility](https://msdn.microsoft.com/en-us/library/system.web.ui .control.renderingcompatibility(v = vs.110).aspx) –
我对web.config进行了这些更改,重建,部署,并且我得到了'System.Net.WebException:请求失败,返回一个空响应。我不知道它是从我的结尾还是另一边的问题。任何想法如何验证我正在使用TLS 1.2? – nasch
您可以使用网络协议分析器,如[Wireshark](https://www.wireshark.org/)来验证您的连接状态。 –
三个步骤需要:
明确标注SSL2.0,TLS1.0,TLS1.1为禁止上您的服务器机器,将
Enabled=0
和DisabledByDefault=1
添加到您的注册表中(完整路径为HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
)。见屏幕细节按照从1中的步骤只是分别使用
Enabled=1
和DisabledByDefault=0
明确启用TLS1.2
。
注意:验证服务器版本:Windows Server 2003
不支持TLS 1.2
协议
仅在应用程序级别启用
TLS1.2
,像@约翰吴上面所建议的。System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
希望本指南帮助。
官方参考 - https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12 – Subbu
- 1. Android Https Web服务通信(SSL/TLS 1.2)
- 2. 如何使PowerBuilder 12.5 web服务符合TLS 1.2
- 3. 如何创建TLS 1.2 WebService的Web服务引用?
- 4. 对于.NET 4.5和.NET 4.5.1,默认启用TLS 1.1和TLS 1.2
- 5. 只有TLS_RSA_WITH_AES_128_CBC_SHA才能使用TLS 1.2服务器/客户端吗?
- 6. .NET 4.7失败时服务器TLS 1.1
- 7. .NET使用php web服务
- 8. 如何在macosx服务器中将TSL 1.0更新为TLS 1.2版本
- 9. 打开TLS 1.2
- 10. 修改Weblogic服务器以使用TLS
- 11. Paypal TLS 1.2和.NET 3.5兼容性
- 12. .Net框架4.6.1不默认为TLS 1.2
- 13. Ejabberd tls 1.2 only
- 14. 如何,如果Android应用程序和服务器实际使用TLS 1.2
- 15. SNI(服务器名称指示)可与TLS 1.2,但通过服务器上TLS 1.0
- 16. 在拼图中强制使用TLS 1.2
- 17. 利用Indy 10 IdHTTP使用TLS 1.2
- 18. .NET XML Web服务,使用类无法访问Web服务类
- 19. Jetty IncludeCipherSuites只启用TLS 1.2
- 20. 使用Php调用.Net Web服务
- 21. CXF Web服务不更新
- 22. Web服务:svn commit更新
- 23. Web服务 - 缓存更新
- 24. XP POSReady和TLS 1.2
- 25. Android使用kSoap以及.NET以外的其他web服务
- 26. 通用.Net Web服务
- 27. 从.NET Web服务
- 28. Pentaho Web服务.Net
- 29. 到.NET Web服务
- 30. 通过Android使用.NET web服务
我相信TLS12必须在服务器上启用。 https://support.quovadisglobal.com/kb/a433/how-to-enable-tls-1_2-on-windows-server-2008-r2.aspx – lcryder
为什么downvotes? – nasch