在 c# asp.net core 3.1 中启用 TLS1.2 或 TLS1.3

Enabling TLS1.2 or TLS1.3 in c# asp.net core 3.1

我正在使用 asp.net 核心 3.1 构建网络应用程序。

我想启用 TLS1.2(或 TLS1.3,如果它工作并且向后兼容。)

我在 IIS Express 下有一个 运行ning 网站,它没有通过 SSL 证书。

控制台显示如下错误:

我遵循了一些说明,我认为我可以通过在 Program.cs 中的 CreateHostBuilder 中执行以下代码来解决问题:

 public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.ConfigureKestrel(s => {
                        s.ConfigureHttpsDefaults(k =>
                        {
                            k.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
                        });
                    }).UseStartup<Startup>();
                });

我有 运行 应用程序,它仍然失败并出现同样的错误。

我也在 运行在我的本地机器上实施 IdentityServer4。那似乎没有同样的问题。

identityserver4 站点是安全的。

如何强制我的网站使用 TLS1.2(或更高版本)?

您可以在此处设置支持的 TSL 协议:

webBuilder.UseKestrel((context, serverOptions) =>
{
    serverOptions.AddServerHeader = false;

    serverOptions.Listen(IPAddress.Any, 80);

    serverOptions.Listen(IPAddress.Any, 443,
        options =>
        {
            var cert = ...Load TLS certificate;

            options.UseHttps(serverCertificate: cert, configureOptions: httpsOptions =>
            {
                httpsOptions.SslProtocols = SslProtocols.Tls12 | SslProtocols.Tls13;
            });
        });
});

另见