Bagikan melalui


Kestrel: Versi protokol TLS yang didukung default berubah

Kestrel sekarang menggunakan versi protokol TLS default sistem daripada membatasi koneksi ke protokol TLS 1.1 dan TLS 1.2 seperti sebelumnya.

Perubahan ini memungkinkan:

  • TLS 1.3 yang akan digunakan secara default di lingkungan yang mendukungnya.
  • TLS 1.0 untuk digunakan di beberapa lingkungan (seperti Windows Server 2016 secara default), yang biasanya tidak diinginkan.

Untuk diskusi, lihat masalah dotnet/aspnetcore#22563.

Versi yang diperkenalkan

5.0 Pratinjau 6

Perilaku yang lama

Kestrel mengharuskan koneksi menggunakan TLS 1.1 atau TLS 1.2 secara default.

Perilaku yang baru

Kestrel memungkinkan sistem operasi untuk memilih protokol terbaik untuk digunakan dan memblokir protokol yang tidak aman. HttpsConnectionAdapterOptions.SslProtocols sekarang default ke SslProtocols.None bukan SslProtocols.Tls12 | SslProtocols.Tls11.

Alasan untuk berubah

Perubahan dilakukan untuk mendukung TLS 1.3 dan versi TLS di masa mendatang secara default saat tersedia.

Kecuali aplikasi Anda memiliki alasan khusus untuk tidak, Anda harus menggunakan default baru. Pastikan sistem Anda dikonfigurasi untuk hanya mengizinkan protokol aman.

Untuk menonaktifkan protokol lama, lakukan salah satu tindakan berikut:

  • Nonaktifkan protokol lama, seperti TLS 1.0, di seluruh sistem dengan instruksi Windows. Saat ini diaktifkan secara default pada semua versi Windows.

  • Pilih protokol mana yang ingin Anda dukung secara manual dalam kode sebagai berikut:

    using System.Security.Authentication;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.Hosting;
    
    public class Program
    {
        public static void Main(string[] args) =>
            CreateHostBuilder(args).Build().Run();
    
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseKestrel(kestrelOptions =>
                    {
                        kestrelOptions.ConfigureHttpsDefaults(httpsOptions =>
                        {
                            httpsOptions.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13;
                        });
                    });
    
                    webBuilder.UseStartup<Startup>();
                });
    }
    

Sayangnya, tidak ada API untuk mengecualikan protokol tertentu.

API yang Terpengaruh

HttpsConnectionAdapterOptions.SslProtocols