Appliquer HTTPS dans ASP.NET CoreEnforce HTTPS in ASP.NET Core

Par Rick AndersonBy Rick Anderson

Ce document montre comment :This document shows how to:

  • Exiger s-HTTP pour toutes les demandes.Require HTTPS for all requests.
  • Rediriger toutes les requêtes HTTP vers HTTPS.Redirect all HTTP requests to HTTPS.

Aucune API ne peut empêcher un client d’envoyer des données sensibles à la première demande.No API can prevent a client from sending sensitive data on the first request.

Avertissement

Ne pas utiliser RequireHttpsAttribute sur les API web qui reçoivent des informations sensibles.Do not use RequireHttpsAttribute on Web APIs that receive sensitive information. RequireHttpsAttribute utilise les codes d’état HTTP pour rediriger les navigateurs de HTTP vers HTTPS.RequireHttpsAttribute uses HTTP status codes to redirect browsers from HTTP to HTTPS. Les clients d’API ne peuvent pas comprendre ou obéir aux règles de redirection HTTP vers HTTPS.API clients may not understand or obey redirects from HTTP to HTTPS. Ces clients peuvent envoyer des informations sur HTTP.Such clients may send information over HTTP. Les API web doivent soit :Web APIs should either:

  • Ne pas écouter sur HTTP.Not listen on HTTP.
  • Fermer la connexion avec le code d’état 400 (demande incorrecte) et ne pas servir la demande.Close the connection with status code 400 (Bad Request) and not serve the request.

Exiger HTTPSRequire HTTPS

Nous recommandons que la production ASP.NET Core appel d’applications web :We recommend that production ASP.NET Core web apps call:

  • Intergiciel (middleware) la Redirection du protocole HTTPS (UseHttpsRedirection) pour rediriger les requêtes HTTP vers HTTPS.HTTPS Redirection Middleware (UseHttpsRedirection) to redirect HTTP requests to HTTPS.
  • Intergiciel (middleware) HSTS (UseHsts) pour envoyer des en-têtes de protocole HTTP Strict Transport Security (HSTS) aux clients.HSTS Middleware (UseHsts) to send HTTP Strict Transport Security Protocol (HSTS) headers to clients.

Notes

Les applications déployées dans une configuration de proxy inverse autoriser le proxy à gérer la sécurité de connexion (HTTPS).Apps deployed in a reverse proxy configuration allow the proxy to handle connection security (HTTPS). Si le proxy gère également la redirection HTTPS, il est inutile d’utiliser l’intergiciel (middleware) la Redirection de HTTPS.If the proxy also handles HTTPS redirection, there's no need to use HTTPS Redirection Middleware. Si le serveur proxy gère également l’écriture des en-têtes HSTS (par exemple, HSTS natifs prend en charge dans IIS 10.0 (1709) ou version ultérieure), HSTS intergiciel (middleware) n’est pas requis par l’application.If the proxy server also handles writing HSTS headers (for example, native HSTS support in IIS 10.0 (1709) or later), HSTS Middleware isn't required by the app. Pour plus d’informations, consultez de refus de HTTPS/HSTS sur la création du projet.For more information, see Opt-out of HTTPS/HSTS on project creation.

UseHttpsRedirectionUseHttpsRedirection

Le code suivant appelle UseHttpsRedirection dans la Startup classe :The following code calls UseHttpsRedirection in the Startup class:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();

    app.UseMvc();
}

Le code précédent en surbrillance :The preceding highlighted code:

Nous vous recommandons d’utiliser des redirections temporaires au lieu des redirections permanentes.We recommend using temporary redirects rather than permanent redirects. Lien de mise en cache peut provoquer un comportement instable dans les environnements de développement.Link caching can cause unstable behavior in development environments. Si vous préférez envoyer un code d’état de redirection permanente lorsque l’application est dans un environnement non liées au développement, consultez le configurer des redirections permanentes en production section.If you prefer to send a permanent redirect status code when the app is in a non-Development environment, see the Configure permanent redirects in production section. Nous vous recommandons d’utiliser HSTS pour signaler aux clients qui sécurisent uniquement les ressources des demandes doivent être envoyés à l’application (uniquement en production).We recommend using HSTS to signal to clients that only secure resource requests should be sent to the app (only in production).

Configuration du portPort configuration

Un port doit être disponible pour l’intergiciel (middleware) pour rediriger une requête non sécurisée vers HTTPS.A port must be available for the middleware to redirect an insecure request to HTTPS. Si aucun port n’est disponible :If no port is available:

  • Redirection vers HTTPS ne se produit.Redirection to HTTPS doesn't occur.
  • L’intergiciel (middleware) consigne l’avertissement « Échoué pour déterminer le port https pour la redirection ».The middleware logs the warning "Failed to determine the https port for redirect."

Spécifiez le port HTTPS en utilisant l’une des approches suivantes :Specify the HTTPS port using any of the following approaches:

  • Définissez HttpsRedirectionOptions.HttpsPort.Set HttpsRedirectionOptions.HttpsPort.

  • Définir le ASPNETCORE_HTTPS_PORT variable d’environnement ou paramètre de configuration d’hôte Web https_port:Set the ASPNETCORE_HTTPS_PORT environment variable or https_port Web Host configuration setting:

    Clé: https_portKey: https_port
    Type : stringType: string
    Par défaut : Aucune valeur par défaut n’est définie.Default: A default value isn't set.
    Définition avec : UseSettingSet using: UseSetting
    Variable d’environnement: <PREFIX_>HTTPS_PORT (Le préfixe est ASPNETCORE_ lorsque vous utilisez le hôte Web.)Environment variable: <PREFIX_>HTTPS_PORT (The prefix is ASPNETCORE_ when using the Web Host.)

    Lorsque vous configurez un IWebHostBuilder dans Program:When configuring an IWebHostBuilder in Program:

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();
        }
    
        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseSetting("https_port", "8080")
                .UseStartup<Startup>();
    }
    
  • Indiquer un port avec le schéma sécurisé à l’aide de la ASPNETCORE_URLS variable d’environnement.Indicate a port with the secure scheme using the ASPNETCORE_URLS environment variable. La variable d’environnement configure le serveur.The environment variable configures the server. L’intergiciel (middleware) détecte indirectement le port HTTPS par le biais de IServerAddressesFeature.The middleware indirectly discovers the HTTPS port via IServerAddressesFeature. Cette approche ne fonctionne pas dans les déploiements de proxy inverse.This approach doesn't work in reverse proxy deployments.

  • Dans le développement, définir une URL HTTPS dans launchsettings.json.In development, set an HTTPS URL in launchsettings.json. Activer le protocole HTTPS lorsque IIS Express est utilisé.Enable HTTPS when IIS Express is used.

  • Configurer un point de terminaison URL HTTPS pour un déploiement de périphérie destinées au public de Kestrel server ou HTTP.sys server.Configure an HTTPS URL endpoint for a public-facing edge deployment of Kestrel server or HTTP.sys server. Uniquement un seul port HTTPS est utilisé par l’application.Only one HTTPS port is used by the app. L’intergiciel (middleware) détecte le port via IServerAddressesFeature.The middleware discovers the port via IServerAddressesFeature.

Notes

Quand une application est exécutée dans une configuration de proxy inverse, IServerAddressesFeature n’est pas disponible.When an app is run in a reverse proxy configuration, IServerAddressesFeature isn't available. Définissez le port à l’aide d’une des autres approches décrites dans cette section.Set the port using one of the other approaches described in this section.

Quand Kestrel ou HTTP.sys est utilisée comme un serveur edge de public, Kestrel ou HTTP.sys doit être configuré pour écouter sur les deux :When Kestrel or HTTP.sys is used as a public-facing edge server, Kestrel or HTTP.sys must be configured to listen on both:

  • Le port sécurisé où le client est redirigé (en règle générale, 443 dans 5001 dans le développement et de production).The secure port where the client is redirected (typically, 443 in production and 5001 in development).
  • Le port non sécurisé (en règle générale, 80 en production) et 5000 dans le développement.The insecure port (typically, 80 in production and 5000 in development).

Le port non sécurisé doit être accessible par le client afin que l’application pour recevoir une requête non sécurisée et de rediriger le client vers le port sécurisé.The insecure port must be accessible by the client in order for the app to receive an insecure request and redirect the client to the secure port.

Pour plus d’informations, consultez configuration de point de terminaison Kestrel ou Implémentation du serveur web HTTP.sys dans ASP.NET Core.For more information, see Kestrel endpoint configuration or Implémentation du serveur web HTTP.sys dans ASP.NET Core.

Scénarios de déploiementDeployment scenarios

N’importe quel pare-feu entre le client et le serveur doit également communication ports sont ouverts pour le trafic.Any firewall between the client and server must also have communication ports open for traffic.

Si les demandes sont transmises dans une configuration de proxy inverse, utilisez intergiciel des en-têtes transférés avant d’appeler intergiciel (middleware) la Redirection de HTTPS.If requests are forwarded in a reverse proxy configuration, use Forwarded Headers Middleware before calling HTTPS Redirection Middleware. Transféré les mises à jour de l’intergiciel des en-têtes le Request.Scheme, en utilisant le X-Forwarded-Proto en-tête.Forwarded Headers Middleware updates the Request.Scheme, using the X-Forwarded-Proto header. Les autorisations de l’intergiciel (middleware) rediriger URI et autres stratégies de sécurité fonctionne correctement.The middleware permits redirect URIs and other security policies to work correctly. Lors de l’intergiciel des en-têtes transférés n’est pas utilisé, l’application back-end ne peut pas recevoir le schéma correct et finir dans une boucle de redirection.When Forwarded Headers Middleware isn't used, the backend app might not receive the correct scheme and end up in a redirect loop. Un message d’erreur utilisateur final commun est que trop de redirections ont eu lieu.A common end user error message is that too many redirects have occurred.

Lorsque vous déployez sur Azure App Service, suivez les instructions de didacticiel : Lier un certificat SSL personnalisé existant à Azure Web Apps.When deploying to Azure App Service, follow the guidance in Tutorial: Bind an existing custom SSL certificate to Azure Web Apps.

OptionsOptions

Les appels de code en surbrillance suivantes AddHttpsRedirection pour configurer les options de l’intergiciel (middleware) :The following highlighted code calls AddHttpsRedirection to configure middleware options:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.AddHsts(options =>
    {
        options.Preload = true;
        options.IncludeSubDomains = true;
        options.MaxAge = TimeSpan.FromDays(60);
        options.ExcludedHosts.Add("example.com");
        options.ExcludedHosts.Add("www.example.com");
    });

    services.AddHttpsRedirection(options =>
    {
        options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
        options.HttpsPort = 5001;
    });
}

Appel AddHttpsRedirection est uniquement nécessaire de modifier les valeurs de HttpsPort ou RedirectStatusCode.Calling AddHttpsRedirection is only necessary to change the values of HttpsPort or RedirectStatusCode.

Le code précédent en surbrillance :The preceding highlighted code:

Configurer des redirections permanentes en productionConfigure permanent redirects in production

Valeur par défaut est de l’intergiciel (middleware) d’envoyer un Status307TemporaryRedirect avec toutes les redirections.The middleware defaults to sending a Status307TemporaryRedirect with all redirects. Si vous préférez envoyer un code d’état de redirection permanente lorsque l’application est dans un environnement non liées au développement, encapsulez la configuration des options intergiciel (middleware) dans un contrôle conditionnel pour un environnement de développement non.If you prefer to send a permanent redirect status code when the app is in a non-Development environment, wrap the middleware options configuration in a conditional check for a non-Development environment.

Lorsque vous configurez un IWebHostBuilder dans Startup.cs:When configuring an IWebHostBuilder in Startup.cs:

public void ConfigureServices(IServiceCollection services)
{
    // IHostingEnvironment (stored in _env) is injected into the Startup class.
    if (!_env.IsDevelopment())
    {
        services.AddHttpsRedirection(options =>
        {
            options.RedirectStatusCode = StatusCodes.Status308PermanentRedirect;
            options.HttpsPort = 443;
        });
    }
}

Intergiciel (middleware) de HTTPS Redirection autre approcheHTTPS Redirection Middleware alternative approach

Une alternative à l’utilisation de HTTPS Redirection Middleware (UseHttpsRedirection) consiste à utiliser l’intergiciel de réécriture d’URL (AddRedirectToHttps).An alternative to using HTTPS Redirection Middleware (UseHttpsRedirection) is to use URL Rewriting Middleware (AddRedirectToHttps). AddRedirectToHttps peut également définir le code d’état et le port lors de l’exécution de la redirection.AddRedirectToHttps can also set the status code and port when the redirect is executed. Pour plus d’informations, consultez intergiciel (middleware) réécriture d’URL.For more information, see URL Rewriting Middleware.

Lors de la redirection vers HTTPS sans la nécessité pour les règles de redirection supplémentaire, nous vous recommandons d’utiliser HTTPS Redirection Middleware (UseHttpsRedirection) décrits dans cette rubrique.When redirecting to HTTPS without the requirement for additional redirect rules, we recommend using HTTPS Redirection Middleware (UseHttpsRedirection) described in this topic.

Le RequireHttpsAttribute est utilisée pour exiger s-HTTP.The RequireHttpsAttribute is used to require HTTPS. [RequireHttpsAttribute] peut décorer contrôleurs ou méthodes, ou peuvent être appliquées globalement.[RequireHttpsAttribute] can decorate controllers or methods, or can be applied globally. Pour appliquer l’attribut global, ajoutez le code suivant à la méthode ConfigureServices dans la classe Startup: To apply the attribute globally, add the following code to ConfigureServices in Startup:

// Requires using Microsoft.AspNetCore.Mvc;
public void ConfigureServices(IServiceCollection services)
{
    services.Configure<MvcOptions>(options =>
    {
        options.Filters.Add(new RequireHttpsAttribute());
    });

Le code précédent en surbrillance nécessite d’utilisent toutes les demandes HTTPS; par conséquent, les requêtes HTTP sont ignorés.The preceding highlighted code requires all requests use HTTPS; therefore, HTTP requests are ignored. Le code en surbrillance suivant redirige toutes les requêtes HTTP vers HTTPS :The following highlighted code redirects all HTTP requests to HTTPS:

// Requires using Microsoft.AspNetCore.Rewrite;
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    var options = new RewriteOptions()
       .AddRedirectToHttps();

    app.UseRewriter(options);

Pour plus d’informations, consultez intergiciel (middleware) réécriture d’URL.For more information, see URL Rewriting Middleware. Le middleware permet également à l’application pour définir le code d’état ou le code d’état et le port lors de l’exécution de la redirection.The middleware also permits the app to set the status code or the status code and the port when the redirect is executed.

Exiger le protocole HTTPS globalement (options.Filters.Add(new RequireHttpsAttribute());) est une meilleure pratique de sécurité,Requiring HTTPS globally (options.Filters.Add(new RequireHttpsAttribute());) is a security best practice. car vous ne pouvez pas garantir la sécurité aux nouveaux contrôleurs ajoutés à votre application. Il faudra penser à appliquer l'attribut [RequireHttps].Applying the [RequireHttps] attribute to all controllers/Razor Pages isn't considered as secure as requiring HTTPS globally. Vous ne pouvez pas garantir que l'attribut [RequireHttps] est appliqué lors de l’ajout de nouveaux contrôleurs et des Pages Razor.You can't guarantee the [RequireHttps] attribute is applied when new controllers and Razor Pages are added.

Protocole de sécurité Strict Transport HTTP (HSTS)HTTP Strict Transport Security Protocol (HSTS)

Par OWASP, HTTP Strict Transport Security (HSTS) est une amélioration de sécurité à accepter qui est spécifiée par une application web via l’utilisation d’un en-tête de réponse.Per OWASP, HTTP Strict Transport Security (HSTS) is an opt-in security enhancement that's specified by a web app through the use of a response header. Quand un navigateur qui prend en charge HSTS reçoit cet en-tête :When a browser that supports HSTS receives this header:

  • Le navigateur stocke la configuration pour le domaine qui empêche l’envoi de toutes les communications via HTTP.The browser stores configuration for the domain that prevents sending any communication over HTTP. Le navigateur force toutes les communications via le protocole HTTPS.The browser forces all communication over HTTPS.
  • Le navigateur empêche l’utilisateur de l’utilisation de certificats non approuvés ou non valides.The browser prevents the user from using untrusted or invalid certificates. Le navigateur désactive les invites qui permettent à un utilisateur de confiance à ce certificat.The browser disables prompts that allow a user to temporarily trust such a certificate.

Étant donné que HSTS est appliquée par le client, il présente certaines limitations :Because HSTS is enforced by the client it has some limitations:

  • Le client doit prendre en charge HSTS.The client must support HSTS.
  • HSTS nécessite au moins une demande HTTPS réussie pour établir la stratégie HSTS.HSTS requires at least one successful HTTPS request to establish the HSTS policy.
  • L’application doit vérifier chaque requête HTTP et rediriger ou rejeter la demande HTTP.The application must check every HTTP request and redirect or reject the HTTP request.

ASP.NET Core 2.1 ou ultérieure implémente HSTS avec la UseHsts méthode d’extension.ASP.NET Core 2.1 or later implements HSTS with the UseHsts extension method. Le code suivant appelle UseHsts lorsque l’application n’est pas dans mode de développement:The following code calls UseHsts when the app isn't in development mode:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseCookiePolicy();

    app.UseMvc();
}

UseHsts n’est pas recommandée dans le développement, car les paramètres HSTS sont hautement mis en cache par les navigateurs.UseHsts isn't recommended in development because the HSTS settings are highly cacheable by browsers. Par défaut, UseHsts exclut l’adresse de bouclage local.By default, UseHsts excludes the local loopback address.

Pour les environnements de production mise en œuvre HTTPS pour la première fois, définissez initial HstsOptions.MaxAge sur une valeur faible à l’aide d’une de la TimeSpan méthodes.For production environments implementing HTTPS for the first time, set the initial HstsOptions.MaxAge to a small value using one of the TimeSpan methods. Définissez la valeur des heures non plus d’une seule journée au cas où vous deviez restaurer l’infrastructure HTTPS vers HTTP.Set the value from hours to no more than a single day in case you need to revert the HTTPS infrastructure to HTTP. Une fois que vous êtes ainsi certain de la durabilité de la configuration de HTTPS, augmentez la valeur de max-age HSTS ; une valeur couramment utilisée est un an.After you're confident in the sustainability of the HTTPS configuration, increase the HSTS max-age value; a commonly used value is one year.

L'exemple de code suivant :The following code:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.AddHsts(options =>
    {
        options.Preload = true;
        options.IncludeSubDomains = true;
        options.MaxAge = TimeSpan.FromDays(60);
        options.ExcludedHosts.Add("example.com");
        options.ExcludedHosts.Add("www.example.com");
    });

    services.AddHttpsRedirection(options =>
    {
        options.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
        options.HttpsPort = 5001;
    });
}
  • Définit le paramètre de préchargement de l’en-tête Strict-Transport-Security.Sets the preload parameter of the Strict-Transport-Security header. Préchargement ne fait pas partie de la spécification de la RFC HSTS, mais est pris en charge par les navigateurs web pour précharger des sites HSTS sur la nouvelle installation.Preload isn't part of the RFC HSTS specification, but is supported by web browsers to preload HSTS sites on fresh install. Pour plus d’informations, consultez https://hstspreload.org/.See https://hstspreload.org/ for more information.
  • Permet de includeSubDomain, auquel s’applique la stratégie HSTS à héberger des sous-domaines.Enables includeSubDomain, which applies the HSTS policy to Host subdomains.
  • Définit explicitement le paramètre d’âge maximal de l’en-tête Strict-Transport-Security à 60 jours.Explicitly sets the max-age parameter of the Strict-Transport-Security header to 60 days. Si ce n’est pas définie, la valeur par défaut est 30 jours.If not set, defaults to 30 days. Consultez le max-age directive pour plus d’informations.See the max-age directive for more information.
  • Ajoute example.com à la liste des hôtes à exclure.Adds example.com to the list of hosts to exclude.

UseHsts exclut les hôtes de bouclage suivants :UseHsts excludes the following loopback hosts:

  • localhost : L’adresse de bouclage IPv4.localhost : The IPv4 loopback address.
  • 127.0.0.1 : L’adresse de bouclage IPv4.127.0.0.1 : The IPv4 loopback address.
  • [::1] : L’adresse de bouclage IPv6.[::1] : The IPv6 loopback address.

Annulations de HTTPS/HSTS sur la création du projetOpt-out of HTTPS/HSTS on project creation

Dans certains scénarios de service back-end où la sécurité de la connexion est gérée en périphérie du réseau destinées au public, configuration de sécurité de la connexion au niveau de chaque nœud n’est pas nécessaire.In some backend service scenarios where connection security is handled at the public-facing edge of the network, configuring connection security at each node isn't required. Généré à partir des modèles dans Visual Studio ou à partir des applications Web le dotnet nouvelle commande Activer la redirection HTTPS et HSTS.Web apps generated from the templates in Visual Studio or from the dotnet new command enable HTTPS redirection and HSTS. Pour les déploiements ne nécessitant pas de ces scénarios, vous pouvez adhérer à de HTTPS/HSTS lorsque l’application est créée à partir du modèle.For deployments that don't require these scenarios, you can opt-out of HTTPS/HSTS when the app is created from the template.

Pour adhérer à de HTTPS/HSTS :To opt-out of HTTPS/HSTS:

Désactivez le configurer pour le protocole HTTPS case à cocher.Uncheck the Configure for HTTPS check box.

Nouvelle Application Web ASP.NET Core boîte de dialogue affichant la configurer pour la case à cocher HTTPS non sélectionné.

Approuver le certificat de développement ASP.NET Core HTTPS sur Windows et Mac OSTrust the ASP.NET Core HTTPS development certificate on Windows and macOS

SDK .NET core inclut un certificat de développement de HTTPS..NET Core SDK includes a HTTPS development certificate. Le certificat est installé en tant que partie de l’expérience de première exécution.The certificate is installed as part of the first-run experience. Par exemple, dotnet --info produit une sortie similaire à ce qui suit :For example, dotnet --info produces output similar to the following:

ASP.NET Core
------------
Successfully installed the ASP.NET Core HTTPS Development Certificate.
To trust the certificate run 'dotnet dev-certs https --trust' (Windows and macOS only).
For establishing trust on other platforms refer to the platform specific documentation.
For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054.

L’installation du kit SDK .NET Core installe le certificat de développement ASP.NET Core HTTPS dans le magasin de certificats de l’utilisateur local.Installing the .NET Core SDK installs the ASP.NET Core HTTPS development certificate to the local user certificate store. Le certificat a été installé, mais il n’a pas été approuvé.The certificate has been installed, but it's not trusted. Pour approuver le certificat procédez à usage unique pour exécuter le dotnet dev-certs outil :To trust the certificate perform the one-time step to run the dotnet dev-certs tool:

dotnet dev-certs https --trust

La commande suivante fournit de l’aide sur l’outil dev-certs :The following command provides help on the dev-certs tool:

dotnet dev-certs https --help

Comment configurer un certificat de développeur pour DockerHow to set up a developer certificate for Docker

Consultez ce problème GitHub.See this GitHub issue.

Faire confiance au certificat HTTPS à partir du sous-système de Windows pour LinuxTrust HTTPS certificate from Windows Subsystem for Linux

Le sous-système Windows pour Linux (WSL) génère un certificat auto-signé HTTPS. Pour configurer le magasin de certificats Windows pour approuver le certificat WSL :The Windows Subsystem for Linux (WSL) generates a HTTPS self-signed cert. To configure the Windows certificate store to trust the WSL certificate:

  • Exécutez la commande suivante pour exporter le certificat WSL généré : dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <cryptic-password>Run the following command to export the WSL generated certificate: dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <cryptic-password>

  • Dans une fenêtre WSL, exécutez la commande suivante : ASPNETCORE_Kestrel__Certificates__Default__Password="<cryptic-password>" ASPNETCORE_Kestrel__Certificates__Default__Path=/mnt/c/Users/user-name/.aspnet/https/aspnetapp.pfx dotnet watch runIn a WSL window, run the following command: ASPNETCORE_Kestrel__Certificates__Default__Password="<cryptic-password>" ASPNETCORE_Kestrel__Certificates__Default__Path=/mnt/c/Users/user-name/.aspnet/https/aspnetapp.pfx dotnet watch run

    La commande précédente définit les variables d’environnement Linux utilise le certificat approuvé Windows.The preceding command sets the environment variables so Linux uses the Windows trusted certificate.

Informations supplémentairesAdditional information