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

问题描述

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

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

用于加载此站点的连接使用TLS 1.0或TLS 1.1,已弃用,以后将被禁用。一旦禁用,将阻止用户加载该网站。服务器应启用TLS 1.2或更高版本。

enter image description here

我什至从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。那没有帮助。建议使用我尝试过的方法here,据作者看来,该方法似乎仅适用于ASP.NET Core 2.0。

我查看了configuration options,发现默认情况下,ASP.NET Core 3.1使用TLS 1.1和TLS 1.2 进行请求。因此,我们从代码结束就不需要做任何事情。

enter image description here

最终,我偶然发现了一个共享{3>

Windows 7支持TLS 1.1和TLS 1.2。 但是这些协议版本 默认情况下未启用该功能。在Windows 8及更高版本上, 协议默认为启用。

因此,这是导致错误的真正原因。我通过从注册表编辑器启用TLS 1.2来解决此问题。甚至Microsoft也建议使用相同的article

希望它可以节省别人的时间。

,

请运行

dotnet dev-certs https --trust

您的Program#CreateHostBuilder应该如下所示(默认)

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });