我們的客戶最近的安全協議升級到TLS 1.2。因此,我們將我們的應用程序升級到4.6.1,期望安全協議將默認爲TLS 1.2,但事實並非如此。任何想法爲什麼?.Net框架4.6.1不默認爲TLS 1.2
回答
MSDN:ServicePointManager.SecurityProtocol物業
此屬性選擇安全套接字層(SSL)或 傳輸層安全(TLS)協議的版本,以用於使用安全超文本傳輸新的連接 僅限協議(HTTPS)方案; 現有連接未更改。 請注意,此屬性沒有默認值爲 。
安全格局不斷變化,默認協議和 保護級別隨時間而改變,以避免已知的 缺點。默認值將取決於個人機 構造而變化,並在其上安裝的軟件,並在其上已經施加 補丁。
從here
.NET 4.6.1的默認安全協議不是TLS 1.2 - 您必須將ServicePointManager.SecurityProtocol的值設置爲它來添加支持 –
這是如何回答問題的?該OP說TLS1.2沒有工作時,它應該 –
我明白這個問題,因爲「我什麼也沒做,預計TLS 1.2工作」 –
摘自我也有類似的問題,這是對我工作。
1)開放Powershell的,並通過使用[Net.ServicePointManager] :: SecurityProtocol
2)運行以下2只小命令檢查所支持的協議。
設置強大的加密64位.Net框架(版本4及以上)
的Set-ItemProperty -Path 'HKLM:\ SOFTWARE \ Microsoft.NetFramework \ v4.0.30319' - 名稱 'SchUseStrongCrypto' - 值 '1' - 類型雙字
在32位.Net框架(版本4及以上)
的Set-ItemProperty -Path「HKLM 設置強加密:\ SOFTWARE \ Microsoft.NetFramework \ v4.0.30319 '-Name'SchUseStrongCrypto'-Value'1'-Type DWord
3)重新啓動Powershell的和支持的協議,通過使用[Net.ServicePointManager] :: SecurityProtocol
現在應該顯示tls1.2以及再次檢查。
希望這有助於
這應該當然適用於安裝了.NET 4.6+的.NET 4.x應用程序代碼。 – user24601
之所以安全協議沒有默認TLS 1.2是因爲在.NET框架4.6.1這個沒有默認值。對不起,如果這是重申已經說過的話,但我想說明一下,我沒有足夠的評論聲望。
4.6.2中沒有默認值,但是就像上面提到的評論者之一一樣,控制檯應用似乎默認爲TLS 1.2。我在4.6.2的網站項目中嘗試了完全相同的代碼,並且它沒有默認爲TLS 1.2。
4.7及以上版本的默認值爲SecurityProtocolType.SystemDefault。
「這允許基於SslStream(例如FTP,HTTP,SMTP和)的.NET Framework聯網API來從操作系統或從由系統管理員執行的任何定製配置繼承默認安全協議」
正如其他人提到的那樣,有許多Windows註冊表項必須設置爲在現有.NET應用程序中啓用TLS 1.2,而無需在應用程序代碼中明確設置協議版本。
爲了使默認.NET 4.x code select the strongest available protocol(即,當未明確地在代碼中指定的協議),需要以下注冊表項:
在Windows的32位和64位版本: HKLM\SOFTWARE\Microsoft\.NETFramework\4.0.30319\SchUseStrongCrypto: 0X00000001
在Windows的64位版本: HKLM\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\4.0.30319\SchUseStrongCrypto: 0X00000001
的在64位系統上運行時,需要10個值才能在32位應用程序中啓用TLS 1.2。
但這裏有一個快速和簡單的解決方案: https://github.com/TheLevelUp/pos-tls-patcher
我認爲這應該是被接受的答案。我們遇到了同樣的問題並觀察到以下情況:正常的.Net EXE按預期工作。在本機進程中託管的程序集(例如IIS,Office Addin)僅在使用TLS 1.2時才進行註冊表設置。 –
@StefanEgli我感到你的痛苦。不知道爲什麼這些信息沒有更好的記錄。我們正試圖說出:http://blog.thelevelup.com/pci-security-is-your-restaurant-ready/ – user24601
@StefanEgli如果您想在本機代碼中使用TLS 1.2,則還需要Schannel註冊表項集:https://docs.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12 – user24601
我用這個在我的代碼最初的頁面上。該應用程序是在.NET Framework 4.6.1的VB.NET中的Web表單。
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
這實際上覆蓋了所有其他版本,更不用說它不回答問題。 – kuskmen
- 1. 對於.NET 4.5和.NET 4.5.1,默認啓用TLS 1.1和TLS 1.2
- 2. TLS 1.2支持僅取決於.NET框架的版本嗎?
- 3. 如何在.Net 3.5框架中實現安全協議TLS 1.2
- 4. 一個Zend_Http_Client和TLS 1.2 Zend框架1
- 5. 從asp.net核心引用類庫庫框架4.6.1 .net完整框架4.6.1
- 6. 用於.NET框架的Web.Config版本4.6.1
- 7. 無法在C#中使用SslStream接受TLS 1.2協議和.net框架4.6
- 8. Paypal TLS 1.2和.NET 3.5兼容性
- 9. Ejabberd tls 1.2 only
- 10. 打開TLS 1.2
- 11. TLS在遊戲框架2.3.x版本1.2實現與Nginx的
- 12. 實體框架默認值
- 13. Ebay API SSL? tls 1.2
- 14. XP POSReady和TLS 1.2
- 15. 如何將App的默認框架更改爲「子框架」?
- 16. 不依賴於.NET 4.6.1
- 17. .NET框架4.5加載GridView上的默認編輯模板?
- 18. 默認情況下,Windows XP SP2是否包含.net框架?
- 19. IIS 5.1默認網站在安裝.net框架後停止
- 20. .Net Core 2.0默認爲0
- 21. .NET IIS默認爲index.html
- 22. 如何強制編譯的目標.NET Framework 4在.NET框架4.6.1下運行?
- 23. Android 4.2.2,如何爲HttpsURLConnection啓用TLS 1.2?
- 24. 如何升級條紋爲TLS 1.2
- 25. NET 4.6.1,NET 4.5.2和CRM 2016
- 26. 默認情況下將骨架框架更改爲1400px
- 27. TLS 1.2中的不同通信模式
- 28. 不能只接受TLS 1.2和boost :: asio?
- 29. 如何爲Visual Studio 2010中的項目設置默認的.Net框架版本
- 30. 如何在VS2013中爲新項目設置默認的.NET框架?
你怎麼知道它不是?你嘗試了什麼? –
默認情況下,TLS 1.2在4.6.2中工作 - 使用HttpClient檢索Google.com主頁(TLS1.2)時沒有問題 –
當連接到服務器時出現此錯誤 「這可能是由於服務器在HTTPS情況下,證書使用HTTP.SYS配置不正確。「 但是,在Global.asax文件的啓動方法中添加此行解決了此問題。 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3; 但是我們想知道爲什麼我們需要設置這個,如果我們有我們的應用程序在.Net 4.6.1 –