Cómo habilitar TLS 1.2 en Asp.Net Core 3.1

Aug 17 2020

Estoy trabajando en el proyecto Asp.Net Core 3.1. Estoy probando localmente. Comencé a recibir errores como

Su conexión no es completamente segura Este sitio utiliza una configuración de seguridad obsoleta, que puede exponer su información (por ejemplo, contraseñas, mensajes o tarjetas de crédito) cuando se envía a este sitio. NET :: ERR_SSL_OBSOLETE_VERSION

La conexión utilizada para cargar este sitio utilizó TLS 1.0 o TLS 1.1, que están en desuso y se desactivarán en el futuro. Una vez desactivado, los usuarios no podrán cargar este sitio. El servidor debe habilitar TLS 1.2 o posterior.

Incluso he habilitado TLS 1.2 de Program.cs como se muestra a continuación:

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

Pero sigue siendo el mismo error.

¿Puede orientarnos sobre cómo resolver este problema?

Respuestas

4 Vikram Sep 02 2020 at 19:19

Para corregir el error, probé con la solución . Eso no ayudó. El método que probé se sugirió aquí que, según el autor, parece funcionar solo para ASP.NET Core 2.0.

Tomo mirada sobre las opciones de configuración y se encontró que de manera predeterminada ASP.NET 3.1 Core utiliza TLS 1.1 y TLS 1.2 para solicitudes. Entonces, no necesitamos nada que hacer desde el final del código.

Finalmente, me topé con un artículo que comparte:

Windows 7 es compatible con TLS 1.1 y TLS 1.2. Pero estas versiones de protocolo no están habilitadas de forma predeterminada. En Windows 8 y versiones posteriores, estos protocolos están habilitados de forma predeterminada.

Entonces, esta fue la verdadera causa del error. Solucioné el problema habilitando TLS 1.2 desde el editor de registro. Incluso Microsoft sugirió la misma solución .

Espero que le ahorre tiempo a alguien más.

1 RoarS. Aug 18 2020 at 00:34

Por favor, corre

dotnet dev-certs https --trust

Su programa # CreateHostBuilder debería verse así (predeterminado)

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