Como habilitar TLS 1.2 no Asp.Net Core 3.1

Aug 17 2020

Estou trabalhando no projeto Asp.Net Core 3.1. Estou testando localmente. Comecei a receber erros como

Sua conexão não é totalmente segura Este site usa uma configuração de segurança desatualizada, que pode expor suas informações (por exemplo, senhas, mensagens ou cartões de crédito) quando forem enviadas para este site. NET :: ERR_SSL_OBSOLETE_VERSION

A conexão usada para carregar este site usava TLS 1.0 ou TLS 1.1, que estão obsoletos e serão desativados no futuro. Depois de desativado, os usuários serão impedidos de carregar este site. O servidor deve ativar o TLS 1.2 ou posterior.

Até habilitei o TLS 1.2 de Program.cs como abaixo -

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

Mas ainda assim o mesmo erro.

Você pode orientar como resolver esse problema?

Respostas

4 Vikram Sep 02 2020 at 19:19

Para corrigir o erro, tentei com a solução . Isso não ajudou. O método que tentei foi sugerido aqui que, de acordo com o autor, parece funcionar apenas para ASP.NET Core 2.0.

Eu examinei as opções de configuração e descobri que, por padrão, o ASP.NET Core 3.1 usa TLS 1.1 e TLS 1.2 para solicitações. Portanto, não precisamos fazer nada desde o final do código.

Eventualmente, me deparei com um artigo que compartilha

O Windows 7 oferece suporte a TLS 1.1 e TLS 1.2. Mas essas versões de protocolo não estão habilitadas nele por padrão. No Windows 8 e superior, esses protocolos são ativados por padrão.

Então, essa foi a verdadeira causa do erro. Corrigi o problema habilitando o TLS 1.2 no editor de registro. Até a Microsoft sugeriu a mesma solução .

Espero que economize o tempo de outra pessoa.

1 RoarS. Aug 18 2020 at 00:34

Por favor corra

dotnet dev-certs https --trust

Seu programa # CreateHostBuilder deve ser semelhante a este (padrão)

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