Comment activer TLS 1.2 dans Asp.Net Core 3.1

Aug 17 2020

Je travaille sur le projet Asp.Net Core 3.1. Je teste localement. J'ai commencé à avoir des erreurs comme

Votre connexion n'est pas totalement sécurisée Ce site utilise une configuration de sécurité obsolète, qui peut exposer vos informations (par exemple, mots de passe, messages ou cartes de crédit) lors de leur envoi sur ce site. NET :: ERR_SSL_OBSOLETE_VERSION

La connexion utilisée pour charger ce site utilisait TLS 1.0 ou TLS 1.1, qui sont obsolètes et seront désactivées à l'avenir. Une fois désactivé, les utilisateurs ne pourront plus charger ce site. Le serveur doit activer TLS 1.2 ou version ultérieure.

J'ai même activé TLS 1.2 à partir de Program.cs comme ci-dessous -

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

Mais toujours la même erreur.

Pouvez-vous s'il vous plaît guider comment résoudre ce problème?

Réponses

4 Vikram Sep 02 2020 at 19:19

Afin de corriger l'erreur, j'ai essayé avec la solution . Cela n'a pas aidé. La méthode que j'ai essayée a été suggérée ici qui, selon l'auteur, semble fonctionner uniquement pour ASP.NET Core 2.0.

J'ai examiné les options de configuration et j'ai constaté que par défaut, ASP.NET Core 3.1 utilise TLS 1.1 et TLS 1.2 pour les demandes. Donc, nous n'avons rien à faire depuis la fin du code.

Finalement, je suis tombé sur un article qui partage -

Windows 7 prend en charge TLS 1.1 et TLS 1.2. Mais ces versions de protocole ne sont pas activées par défaut. Sur Windows 8 et supérieur, ces protocoles sont activés par défaut.

C'était donc la véritable cause de l'erreur. J'ai résolu le problème en activant TLS 1.2 à partir de l'éditeur de registre. Même Microsoft a suggéré la même solution .

J'espère que cela fera gagner du temps à quelqu'un d'autre.

1 RoarS. Aug 18 2020 at 00:34

Veuillez courir

dotnet dev-certs https --trust

Votre programme # CreateHostBuilder devrait ressembler à ceci (par défaut)

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