Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Kestrel ora usa le versioni predefinite del protocollo TLS di sistema anziché limitare le connessioni ai protocolli TLS 1.1 e TLS 1.2 come in precedenza.
Questa modifica consente:
- Uso di TLS 1.3 per impostazione predefinita in ambienti che lo supportano.
- Uso di TLS 1.0 in alcuni ambienti, ad esempio Windows Server 2016 per impostazione predefinita, che in genere è non auspicabile.
Per informazioni, vedere il problema dotnet/aspnetcore#22563.
Versione introdotta
5.0 Preview 6
Comportamento precedente
Kestrel richiedeva che le connessioni usassero TLS 1.1 o TLS 1.2 per impostazione predefinita.
Nuovo comportamento
Kestrel consente al sistema operativo scegliere il protocollo ottimale da usare e di bloccare i protocolli non sicuri. L'impostazione predefinita per HttpsConnectionAdapterOptions.SslProtocols è ora SslProtocols.None
anziché SslProtocols.Tls12 | SslProtocols.Tls11
.
Motivo della modifica
La modifica è stata apportata per supportare TLS 1.3 e le versioni future di TLS per impostazione predefinita non appena diventano disponibili.
Azione consigliata
A meno che l'app non abbia un motivo specifico per non farlo, è consigliabile usare le nuove impostazioni predefinite. Verificare che il sistema sia configurato per consentire solo protocolli sicuri.
Per disabilitare i protocolli meno recenti, eseguire una delle azioni seguenti:
Disabilitare i protocolli meno recenti, ad esempio TLS 1.0, a livello di sistema con le istruzioni di Windows. È attualmente abilitato per impostazione predefinita in tutte le versioni di Windows.
Selezionare manualmente i protocolli da supportare nel codice come indicato di seguito:
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>(); }); }
Sfortunatamente non esiste alcuna API per escludere protocolli specifici.