我需要使用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