.NET framework versi 3.5 dan versi yang lebih lama tidak menyediakan dukungan untuk aplikasi agar menggunakan Versi Default Sistem Keamanan Lapisan Transportasi (TLS) sebagai protokol kriptografi. Pembaruan ini memungkinkan penggunaan TLS v1.2 di .NET Framework 3.5.
Catatan Konten ini telah tersedia pada Windows Perbarui. Untuk mendapatkan konten, pindai Windows Pembaruan untuk pembaruan .NET Framework terbaru. Jika sistem sepenuhnya diperbarui melalui pembaruan Windows, Anda tidak perlu melakukan tindakan lebih lanjut.
Pemecahan Masalah
Mengunduh informasi
Hotfix yang sesuai dengan KB3154519 telah menggantikan dengan pembaruan terkini .NET Framework, yang berisi semua perbaikan yang sebelumnya disertakan dalam KB3154519. Disarankan untuk menginstal pembaruan terkini dari .NET Framework. Kami telah melakukan penyempurnaan berikut di area ini:
-
Kunci registri berikut ini bisa disetel agar menggunakan sistem operasi default untuk SSL dan TLS, bukan .NET Framework kode keras default untuk aplikasi terkelola yang berjalan di komputer.
-
Untuk sistem operasi 64-bit:[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 -
Untuk sistem operasi 32-bit:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
Catatan Jika aplikasi telah mengatur ServicePointManager.SecureProtocol dalam kode atau melalui file config ke nilai tertentu, atau menggunakan API SslStream.AuthenticateAs* untuk menentukan enum SslProtocols tertentu, perilaku pengaturan registri tidak akan terjadi.
-
-
Selain itu, kami telah menambahkan enumerasi SslProtocolsExtensions yang dapat Anda gunakan sebagai opsi untuk mengatur TLS v1.2, TLS v1.1, serta default sistem operasi untuk properti ServicePointManager.SecurityProtocol ketika menargetkan .NET framework versi 2.0 SP2. (Lihat bagian Panduan Pengembang untuk informasi tentang cara menggunakan ekstensi.)
Perhatikan Windows Vista SP2 dan Windows Server 2008 SP2 tidak mendukung versi protokol Keamanan Lapisan Transportasi (TLS) yang lebih baru dari 1.0. Aplikasi .NET Framework 2.0 SP2 yang dikelola yang berjalan di Windows Vista SP2 atau Windows Server 2008 SP2 tidak dapat menggunakan TLS 1.2 atau TLS 1.1, meskipun protokol tersebut diatur dalam properti ServicePointManager.SecurityProtocol.
Untuk informasi lebih lanjut tentang cara mengunduh file pendukung Microsoft, klik nomor artikel di bawah ini untuk melihat artikel pada Pangkalan Pengetahuan Microsoft:
119591 Cara mendapatkan file dukungan Microsoft dari layanan online Yang dipindai Microsoft untuk virus. Microsoft menggunakan perangkat lunak deteksi virus terbaru yang tersedia pada tanggal file tersebut diposting. File akan disimpan di server keamanan yang disempurnakan untuk membantu mencegah perubahan yang tidak sah pada file.
Panduan Pengembang
Definisi ekstensi baru ada dalam file berikut ini:
-
SecurityProtocolTypeExtensions.csnamespace System.Net
{ menggunakan System.Security.Authentication; kelas statis publik 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
{ kelas statis publik SslProtocolsExtensions { public const SslProtocols Tls12 = (SslProtocols)0x00000C00; const publik SslProtocols Tls11 = (SslProtocols)0x00000300; } }
Untuk menyertakan dukungan untuk TLS v1.2, sertakan file sumber di proyek Anda, lalu atur versi protokol dengan menggunakan metode berikut ini:
-
Aplikasi yang menggunakan API berbasis ServicePointManager bisa mengatur protokol dengan menggunakan yang berikut ini:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12; -
Aplikasi yang menggunakan SslStream AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) dapat menetapkan nilai SslProtocols sebagai SslProtocolsExtensions.Tls12.
Jika pengaturan registri yang disebutkan dalam paragraf pertama diatur, dan nilai SslProtocols diatur dalam aplikasi sebagai SslProtocols.None, perilaku default sistem yang dipilih akan bergantung pada versi Windows.
Selain itu, saat mengubah kode aplikasi untuk mengaktifkan dukungan untuk TLS v1.2 dengan .NET Framework 3.5 SP1, Anda harus memastikan bahwa Anda telah menangani pengecualian berikut ini di komputer tempat patch ini tidak digunakan:-
Jika hotfix tidak diinstal, API berbasis ServicePointManager (HTTP, FTP, SMTP) akan menetapkan "System.NotSupportedException: Protokol keamanan yang diminta tidak didukung" ketika aplikasi memanggil ServicePointManager.SecurityProtocol untuk menetapkan nilai baru.
-
Jika hotfix tidak diinstal, API berbasis SslStream akan memberikan pengecualian ketika mereka memanggil salah satu API AuthenticateAs*:
System.ArgumentException: Nilai yang ditentukan tidak valid dalam enumerasi 'SslProtocolType'.
Nama parameter: sslProtocolType
Catatan Hanya untuk SslStream, kombinasi dari Tls12, Tls11 dengan salah satu Tls, Ssl3, Ssl2 yang sudah ada (misalnya: Tls12 | Tls11 | Tls) akan menurunkan tingkat secara diam-diam ke protokol yang sudah ada (misalnya: Tls) pada sistem tanpa patch. Tautan akan tersambung ke Tls tanpa memberikan pengecualian.
Informasi Selengkapnya
Untuk mengaktifkan TLS v1.1 atau v1.2 sebagai default sistem operasi, ikuti instruksi di https://technet.microsoft.com/en-us/library/dn786418(v=ws.11).aspx#BKMK_SchannelTR_TLS12. Catatan TLS v1.1 dan v1.2 tidak tersedia di Windows Vista atau Windows Server 2008. Jika harus menonaktifkan default sistem operasi yang diatur oleh kunci registri yang disebutkan di bagian "Resolusi" untuk aplikasi tertentu, Anda dapat melakukannya dengan menambahkan kunci registri berikut ini:HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node\]Microsoft\.NETFramework\v2.0.50727\System.Net.ServicePointManager.SystemDefaultTlsVersions <<Jalur lengkap .exe untuk file>> DWORD 0 C:\MyApp\MyApp.exe DWORD 0
Untuk informasi selengkapnya tentang TLS v1.2, lihat Memperkenalkan TLS v1.2. Setelah mengaktifkan kunci registri SystemDefaultTlsVersions .NET, perilaku berbeda terjadi untuk setiap versi Windows, seperti yang diperlihatkan dalam tabel berikut ini.
Windows baru |
Klien SSL2 |
SSL2 Server |
Klien SSL3 |
SSL3 Server |
Klien TLS 1.0 |
TLS 1.0 Server |
Klien TLS 1.1 |
TLS 1.1 Server |
Klien TLS 1.2 |
TLS 1.2 Server |
---|---|---|---|---|---|---|---|---|---|---|
Windows Vista SP2 dan Windows Server 2008 SP2 |
Nonaktif |
On |
On |
On |
On |
On |
N/A |
N/A |
N/A |
N/A |
Windows 7 SP1 dan Windows Server 2008 R2 SP1 |
Nonaktif |
On |
On |
On |
On |
On |
Nonaktif |
Nonaktif |
Nonaktif |
Nonaktif |
Windows Server 2012 |
Nonaktif |
Nonaktif |
On |
On |
On |
On |
On |
On |
On |
On |
Windows 8.1 dan Windows Server 2012 R2 |
Nonaktif |
Nonaktif |
On |
On |
On |
On |
On |
On |
On |
On |
Windows 10 |
Nonaktif |
Nonaktif |
On |
On |
On |
On |
On |
On |
On |
On |
Windows 10 (1511) |
Nonaktif |
Nonaktif |
On |
On |
On |
On |
On |
On |
On |
On |
Windows 10 (1607) dan Windows Server 2016 |
N/A |
N/A |
Nonaktif |
Nonaktif |
On |
On |
On |
On |
On |
On |