Kestrel: Varsayılan desteklenen TLS protokolü sürümleri değiştirildi

Kestrel artık daha önce olduğu gibi TLS 1.1 ve TLS 1.2 protokolleriyle bağlantıları kısıtlamak yerine sistem varsayılan TLS protokol sürümlerini kullanıyor.

Bu değişiklik şunları sağlar:

Tartışma için bkz. sorun dotnet/aspnetcore#22563.

Sürüm kullanıma sunulmuştur

5.0 Önizleme 6

Eski davranış

Kestrel, bağlantıların varsayılan olarak TLS 1.1 veya TLS 1.2 kullanmasını gerektirir.

Yeni davranış

Kestrel, işletim sisteminin kullanılacak en iyi protokolü seçmesini ve güvenli olmayan protokolleri engellemesini sağlar. HttpsConnectionAdapterOptions.SslProtocols şimdi yerine varsayılan olarak SslProtocols.NoneSslProtocols.Tls12 | SslProtocols.Tls11kullanılır.

Değişiklik nedeni

TlS 1.3 ve gelecekteki TLS sürümlerinin varsayılan olarak kullanılabilir duruma gelmesi için değişiklik yapıldı.

Uygulamanızın bunu yapmak için belirli bir nedeni yoksa, yeni varsayılan değerleri kullanmanız gerekir. Sisteminizin yalnızca güvenli protokollere izin verecek şekilde yapılandırıldığını doğrulayın.

Eski protokolleri devre dışı bırakmak için aşağıdaki eylemlerden birini yapın:

  • Windows yönergeleriyle TLS 1.0 gibi eski protokolleri sistem genelinde devre dışı bırakın. Şu anda tüm Windows sürümlerinde varsayılan olarak etkindir.

  • Kodda desteklemek istediğiniz protokolleri aşağıdaki gibi el ile seçin:

    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>();
                });
    }
    

Ne yazık ki belirli protokolleri dışlayan bir API yoktur.

Etkilenen API’ler

HttpsConnectionAdapterOptions.SslProtocols