Kestrel: versões do protocolo TLS com suporte padrão alteradas
O Kestrel agora usa as versões de protocolo TLS padrão do sistema em vez de restringir conexões com os protocolos TLS 1.1 e TLS 1.2 como antes.
Essa alteração permite:
- Que o TLS 1.3 seja usado por padrão em ambientes que dão suporte a ele.
- Que o TLS 1.0 seja usado em alguns ambientes (como Windows Server 2016 por padrão), o que geralmente não é desejável.
Para discussão, consulte o problema dotnet/aspnetcore#22563.
Versão introduzida
5.0 Versão Prévia 6
Comportamento antigo
O Kestrel exigia que as conexões usassem o TLS 1.1 ou o TLS 1.2 por padrão.
Novo comportamento
Permite que o sistema operacional escolha o melhor protocolo a ser usado e bloqueie protocolos que não são seguros. HttpsConnectionAdapterOptions.SslProtocols agora é padrão para SslProtocols.None
em vez de SslProtocols.Tls12 | SslProtocols.Tls11
.
Motivo da alteração
A alteração foi feita para dar suporte ao TLS 1.3 e versões futuras do TLS por padrão à medida que elas ficam disponíveis.
Ação recomendada
Você deve usar esse valor, a menos que o aplicativo tenha um motivo específico para não usá-lo. Verifique se o sistema está configurado para permitir apenas protocolos seguros.
Para desabilitar protocolos mais antigos, execute uma das seguintes ações:
Desabilite protocolos mais antigos, como o TLS 1.0, em todo o sistema com as instruções do Windows. No momento, ele está habilitado por padrão em todas as versões do Windows.
Selecione manualmente a quais protocolos você deseja dar suporte no código da seguinte maneira:
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>(); }); }
Infelizmente, não há API para excluir protocolos específicos.