Partager via


Utiliser SSL pour les applications ASP.NET Core conteneurisées

SSL (Secure Sockets Layer) fournit des connexions sécurisées via HTTP (HTTPS). Cette méthode de sécurisation des connexions utilise un certificat et, dans une application conteneurisée, les mappages de ports sont différents pour les points d’entrée sécurisés et non sécurisés.

Prerequisites

Prerequisites

  • Docker Desktop.
  • Visual Studio avec la charge de travail de développement ASP.NET et web, la charge de travail de développement Azure et/ou la charge de travail de développement de bureau .NET installée.

Sécurité pour les applications multicontainer

Les architectures d’application multicontainer varient en fonction des exigences de sécurité. Certaines conceptions d’application utilisent HTTPS pour les points de terminaison externes, mais HTTP pour la communication interne d’un conteneur à un autre. Les environnements haute sécurité peuvent utiliser HTTPS pour toutes les communications, même entre les conteneurs qui sont uniquement accessibles dans un périmètre externe sécurisé.

Ports et mappages de ports

Le fichier Dockerfile contient des directives pour exposer des ports au trafic externe via HTTP non sécurisé ou HTTPS sécurisé. En outre, .NET 8 et versions ultérieures exécutent l’application conteneurisée en tant qu’utilisateur classique, mais dans les versions antérieures de .NET, les applications conteneurisées s’exécutent en tant qu’administrateur. Lors de l’exécution en tant qu’administrateur, les applications ont accès aux ports privilégiés 80 pour le trafic HTTP et au trafic HTTPS 443. Lorsque les applications s’exécutent en tant qu’utilisateurs sans privilèges élevés, elles utilisent des ports 8080 pour HTTP et 8081 pour HTTPS. Les ports apparaissent dans les commandes EXPOSE dans le fichier Dockerfile généré par Visual Studio. Les ports du conteneur spécifiés dans le fichier Dockerfile sont mappés aux ports hôtes à l’aide des mappages spécifiés dans le fichier de paramètres de lancement. Consultez les paramètres de lancement des outils de conteneur . Lorsque le conteneur est en cours d’exécution, vous pouvez afficher les mappages de ports dans la fenêtre Conteneurs. Consultez Afficher et diagnostiquer les conteneurs.

Certificats

Les outils de conteneur dans Visual Studio prennent en charge le débogage d’une application de base ASP.NET compatible SSL avec un certificat de développement, de la même façon que vous vous attendiez à ce qu’elle fonctionne sans conteneurs. Pour ce faire, Visual Studio ajoute quelques étapes supplémentaires pour exporter le certificat et le rendre disponible pour le conteneur. Voici le flux géré par Visual Studio lors du débogage dans le conteneur :

  1. Garantit que le certificat de développement local est présent et approuvé sur l’ordinateur hôte via l’outil dev-certs.

  2. Exporte le certificat vers %APPDATA%\ASP.NET\Https avec un mot de passe sécurisé stocké dans le magasin de secrets utilisateur pour cette application particulière.

  3. Le volume monte les répertoires suivants :

    • *%APPDATA%\Microsoft\UserSecrets
    • *%APPDATA%\ASP.NET\Https

ASP.NET Core recherche un certificat qui correspond au nom de l’assembly sous le dossier Https, c’est pourquoi il est mappé au conteneur dans ce chemin d’accès. Le chemin d’accès et le mot de passe du certificat peuvent également être définis à l’aide de variables d’environnement (autrement dit, ASPNETCORE_Kestrel__Certificates__Default__Path et ASPNETCORE_Kestrel__Certificates__Default__Password) ou dans le fichier json des secrets utilisateur, par exemple :

{
  "Kestrel": {
    "Certificates": {
      "Default": {
        "Path": "c:\\app\\mycert.pfx",
        "Password": "strongpassword"
      }
    }
  }
}

Si votre configuration prend en charge les builds conteneurisées et non conteneurisées, vous devez utiliser les variables d’environnement, car les chemins d’accès sont spécifiques à l’environnement de conteneur.

Pour plus d’informations sur l’utilisation de SSL avec des applications ASP.NET Core dans des conteneurs, consultez Hébergement d’images ASP.NET Core avec Docker sur HTTPS.

Pour obtenir un exemple de code qui illustre la création de certificats personnalisés pour une application multiservice approuvée sur l’hôte et dans les conteneurs pour la communication de service à service HTTPS, consultez CertExample.

Si vous envisagez de déployer votre application conteneurisée sur Azure, consultez Configurer HTTPS lors du déploiement d’applications conteneurisées sur Azure.