如何在 Asp.Net Core 3.1 中启用 TLS 1.2

How to enable TLS 1.2 in Asp.Net Core 3.1

我正在研究 Asp.Net Core 3.1 项目。我在本地测试。我开始收到错误

您的连接不完全安全 本网站使用过时的安全配置,当您的信息(例如,密码、消息或信用卡)发送到本网站时,可能会暴露您的信息。 NET::ERR_SSL_OBSOLETE_VERSION

用于加载此站点的连接使用了 TLS 1.0 或 TLS 1.1,这些已被弃用并且将来会被禁用。一旦禁用,用户将无法加载该网站。服务器应启用 TLS 1.2 或更高版本。

我什至从 Program.cs 启用了 TLS 1.2,如下所示 -

public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.ConfigureKestrel(serverOptions =>
                {
                    serverOptions.ConfigureHttpsDefaults(co =>
                    {
                        co.SslProtocols = SslProtocols.Tls12;
                    });
                }).UseStartup<Startup>();
            });

但还是一样的错误。

能否请您指导如何解决此问题?

为了修复错误,我尝试使用 solution. That didn't help. The method I tried was suggested here,根据作者的说法,它似乎仅适用于 ASP.NET Core 2.0。

我查看了 configuration options,发现 默认情况下 ASP.NET Core 3.1 对请求使用 TLS 1.1 和 TLS 1.2。所以,我们不需要从代码端做任何事情。

最终,我无意中发现了一个 article 共享-

Windows 7 supports TLS 1.1 and TLS 1.2. But these protocol versions are not enabled on it by default. On Windows 8 and higher these protocol are enabled by default.

所以,这才是错误的真正原因。我通过从注册表编辑器启用 TLS 1.2 解决了这个问题。甚至微软也提出了同样的建议 solution.

希望它能节省别人的时间。