Kestrel: Standaard ondersteunde TLS-protocolversies zijn gewijzigd

Kestrel maakt nu gebruik van de standaardversies van het TLS-protocol in plaats van verbindingen met de TLS 1.1- en TLS 1.2-protocollen te beperken, zoals voorheen.

Met deze wijziging kunt u het volgende doen:

  • TLS 1.3 wordt standaard gebruikt in omgevingen die dit ondersteunen.
  • TLS 1.0 moet worden gebruikt in sommige omgevingen (zoals Windows Server 2016 standaard), wat meestal niet wenselijk is.

Zie het probleem dotnet/aspnetcore#22563 voor discussie.

Geïntroduceerde versie

5.0 Preview 6

Oud gedrag

Kestrel vereist dat verbindingen standaard TLS 1.1 of TLS 1.2 gebruiken.

Nieuw gedrag

Kestrel stelt het besturingssysteem in staat om het beste protocol te kiezen dat moet worden gebruikt en om onveilige protocollen te blokkeren. HttpsConnectionAdapterOptions.SslProtocols wordt nu standaard ingesteld op SslProtocols.None in plaats van SslProtocols.Tls12 | SslProtocols.Tls11.

Reden voor wijziging

De wijziging is standaard aangebracht ter ondersteuning van TLS 1.3 en toekomstige TLS-versies zodra deze beschikbaar komen.

Tenzij uw app een specifieke reden heeft om dit niet te doen, moet u de nieuwe standaardwaarden gebruiken. Controleer of uw systeem is geconfigureerd om alleen veilige protocollen toe te staan.

Als u oudere protocollen wilt uitschakelen, voert u een van de volgende acties uit:

  • Schakel oudere protocollen, zoals TLS 1.0, systeembreed uit met de Windows-instructies. Het is momenteel standaard ingeschakeld voor alle Windows-versies.

  • Selecteer handmatig welke protocollen u als volgt wilt ondersteunen in code:

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

Helaas is er geen API om specifieke protocollen uit te sluiten.

Betreffende API's

HttpsConnectionAdapterOptions.SslProtocols