.NET framework 版本 3.5.1 及較舊版本並未支援應用程式使用傳輸層安全性 (TLS) 系統預設版本做為加密通訊協定。 此更新可在 3.5.1 .NET Framework TLS v1.2 使用。
注意 :這些內容已在更新Windows提供。 若要取得內容,請掃描 Windows 更新以取得最新的.NET Framework更新。 如果您的系統透過更新更新Windows為最新版本,則不需要採取進一步動作。
解決方案
下載資訊
對應至 KB3154518 的修補程式已取代為 .NET Framework 的最新更新,其中包含先前包含在 KB3154518 中的所有修正程式。 建議您安裝最新更新.NET Framework。 我們在此領域做了下列改進:
-
對於電腦上執行的受管理應用程式,您可以將下列登錄機碼設定為使用 SSL 和 TLS 的作業系統預設值,而非硬式編碼的 .NET Framework 預設值。
-
適用于 64 位作業系統:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727] "SystemDefaultTlsVersions"=dword:00000001 -
適用于 32 位作業系統:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
注意:如果應用程式已經透過程式碼或組態檔,將 ServicePointManager.SecureProtocol 設定為特定值,或者使用 SslStream.AuthenticateAs* API 來指定特定 SslProtocols 列舉,則不會出現登錄設定行為。
-
-
此外,我們新增了 SslProtocolsExtensions 列舉,您可以在設定 .NET 框架版本 2.0 SP2 時,做為設定 TLS v1.2、TLS v1.1 的選項,以及 ServicePointManager.SecurityProtocol 屬性的作業系統預設值。 (請參閱開發人員指南一節,以瞭解如何使用擴充功能。)
請注意Windows Vista SP2 和 Windows Server 2008 SP2 不支援傳輸層安全性 (TLS) 更新于 1.0 的通訊協定版本。 在 Windows Vista SP2 或 Windows Server 2008 SP2 上執行受管理的 .NET Framework 2.0 SP2 應用程式無法使用 TLS 1.2 或 TLS 1.1,即使這些通訊協定是設定在 ServicePointManager.SecurityProtocol 屬性中。
若要進一步瞭解如何下載 Microsoft 支援檔案,請按一下下列文章編號以在 Microsoft 知識庫中查看文章:
119591 如何從線上服務取得 Microsoft 支援檔案 Microsoft 掃描此檔案中的病毒。 Microsoft 是利用發佈當日的最新病毒偵測軟體來掃描檔案。 檔案會儲存在安全性強化的伺服器上,以避免任何未經授權的變更。
開發人員指南
新副檔名的定義如下:
-
SecurityProtocolTypeExtensions.csnamespace System.Net
{ 使用 System.Security.Authentication; 公用靜態類別 SecurityProtocolTypeExtensions { public const SecurityProtocolType Tls12 = (SecurityProtocolType) SslProtocolsExtensions.Tls12; public const SecurityProtocolType Tls11 = (SecurityProtocolType) SslProtocolsExtensions.Tls11; public const SecurityProtocolType SystemDefault = (SecurityProtocolType) 0; } } -
SslProtocolsExtensions.csnamespace System.Security.Authentication
{ 公用靜態類 SslProtocolsExtensions { 公用 const SslProtocols Tls12 = (SslProtocols) 0x00000C00; 公用 const SslProtocols Tls11 = (SslProtocols) 0x00000300; } }
若要包含 TLS v1.2 的支援,請包含專案中的來源檔案,然後使用下列方法設定通訊協定版本:
-
使用 ServicePointManager 型 API 的應用程式可以使用下列方法設定通訊協定:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; -
使用 SslStream AuthenticateAsClient (String、X509CertificateCollection、SslProtocols、布林值) 重載的應用程式可以將 SslProtocols 值設為 SslProtocolsExtensions.Tls12。
如果第一個段落提及的註冊表設定已設定,且應用程式中的 SslProtocols 值設為 SslProtocols.None,則系統預設行為會視 Windows 版本而決定。
此外,當您變更應用程式代碼以啟用 tLS v1.2 與 .NET Framework 3.5 SP1 的支援時,您應該確定解決未部署此修補程式的電腦上下列例外情形:-
如果未安裝 hotfix,當應用程式打電話給 ServicePointManager.SecurityProtocol 以設定新值時,ServicePointManager 型 API (HTTP、FTP、SMTP) 會傳出「System.NotSupportedException:不支援要求的安全性通訊協定」。
-
如果未安裝 hotfix,當 SslStream 型 API 呼叫任何一個 AuthenticateAs* API 時,就會引發例外:
System.ArgumentException:指定的值在 'SslProtocolType' 列舉中無效。
參數名稱:sslProtocolType
注意 僅適用于 SslStream,Tls12、Tls11 與任何現有的 Tls、Ssl3、Ssl2 (例如:Tls12 |Tls11 |Tls) 會以無提示方式降級到現有的通訊協定 (例如:Tls) 沒有修補程式的系統上。 它會連接到 Tls,而不會引發例外。
其他相關資訊
若要將 TLS v1.1 或 v1.2 啟用為作業系統預設值,請遵循 HTTPs://technet.microsoft.com/en-us/library/dn786418 (v=ws.11) .aspx#BKMK_SchannelTR_TLS12的指示。 請注意,Vista 或 Windows Server 2008 中Windows TLS v1.1 和 v1.2。 如果您必須停用由特定應用程式的 「解決」區段提及的登錄機碼所設定的作業系統預設值,您可以為檔案>> DWORD 0 新增下列登錄機碼:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions <<.exe 完整路徑>> C:\MyApp\MyApp.exe DWORD 0
有關 TLS v1.2 的資訊,請參閱 介紹 TLS v1.2。 啟用 SystemDefaultTlsVersions .NET 登錄機碼之後,每個版本的 Windows 會發生不同的行為,如下表所示。
Windows 版本 |
SSL2 用戶端 |
SSL2 Server |
SSL3 用戶端 |
SSL3 Server |
TLS 1.0 用戶端 |
TLS 1.0 Server |
TLS 1.1 用戶端 |
TLS 1.1 Server |
TLS 1.2 用戶端 |
TLS 1.2 Server |
---|---|---|---|---|---|---|---|---|---|---|
Windows Vista SP2 及 Windows Server 2008 SP2 |
關閉 |
已上 |
已上 |
已上 |
已上 |
已上 |
不適用 |
不適用 |
不適用 |
不適用 |
Windows 7 SP1 和 Windows Server 2008 R2 SP1 |
關閉 |
已上 |
已上 |
已上 |
已上 |
已上 |
關閉 |
關閉 |
關閉 |
關閉 |
Windows Server 2012 |
關閉 |
關閉 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
Windows 8.1 和 Windows Server 2012 R2 |
關閉 |
關閉 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
Windows 10 |
關閉 |
關閉 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
Windows 10 (1511) |
關閉 |
關閉 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |
Windows 10 (1607) Windows Server 2016 |
不適用 |
不適用 |
關閉 |
關閉 |
已上 |
已上 |
已上 |
已上 |
已上 |
已上 |