Kestrel 现在使用系统默认的 TLS 协议版本,而不是像以前那样限制与 TLS 1.1 和 TLS 1.2 协议的连接。
此更改允许:
- TLS 1.3 在支持 TLS 1.3 的环境中默认使用。
 - 在某些环境(例如默认的 Windows Server 2016)中使用 TLS 1.0,但这通常不理想。
 
有关讨论,请参阅问题 dotnet/aspnetcore#22563。
已引入的版本
5.0 预览版 6
旧行为
Kestrel 要求连接默认使用 TLS 1.1 或 TLS 1.2。
新行为
Kestrel 允许作系统选择要使用的最佳协议并阻止不安全的协议。 
              HttpsConnectionAdapterOptions.SslProtocols 现在默认为 SslProtocols.None 而不是 SslProtocols.Tls12 | SslProtocols.Tls11。
更改原因
进行此项更改是为了在 TLS 1.3 和未来的 TLS 版本可用时默认支持它们。
建议的措施
除非你的应用有特定原因不这样做,否则应使用新的默认值。 验证系统是否已配置为仅允许安全协议。
若要禁用较旧的协议,请执行下列作之一:
使用 Windows 说明在整个系统中禁用较旧的协议(如 TLS 1.0)。 它目前在所有 Windows 版本上默认启用。
手动选择要在代码中支持的协议,如下所示:
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>(); }); }
遗憾的是,没有用于排除特定协议的 API。