除非 .NET 應用程式指定不同的通訊協定版本,否則 .NET 架構版本 2.0 Service Pack 2 (SP2) 和較舊版本會硬編碼使用安全通訊端層 (SSL) v3.0 和傳輸層安全性 (TLS) v1.0。 此更新適用于 Windows Vista SP2 和 Windows Server 2008 SP2 上的 .NET Framework 2.0 SP2,新增了使用作業系統提供的 SSL 和 TLS 預設值的選項。

注意   :這些內容已在更新Windows提供。 若要取得內容,請掃描 Windows 更新以取得最新的.NET Framework更新。 如果您的系統透過更新更新Windows為最新版本,則不需要採取進一步動作。 

解決方案

下載資訊

對應至 KB3154517 的修補程式已取代為 .NET Framework 的最新更新,其中包含先前包含在 KB3154517 中的所有修正程式。 建議您安裝最新更新.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 的支援時,您應該確定解決未部署此修補程式的電腦上下列例外情形:
 

  1. 如果未安裝 hotfix,當應用程式打電話給 ServicePointManager.SecurityProtocol 以設定新值時,ServicePointManager 型 API (HTTP、FTP、SMTP) 會傳出「System.NotSupportedException:不支援要求的安全性通訊協定」。

  2. 如果未安裝 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

不適用

不適用

關閉

關閉

已上

已上

已上

已上

已上

已上

Need more help?

擴展您的技能

探索訓練 >

優先取得新功能

加入 MICROSOFT 測試人員 >

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×