Partager via


Hébergement d’images ASP.NET Core avec Docker Compose sur HTTPS

ASP.NET Core utilise HTTPS par défaut. HTTPS s’appuie sur des certificats pour l’approbation, l’identity et le chiffrement.

Ce document explique comment exécuter des images conteneur prédéfinies avec HTTPS.

Pour les scénarios de développement, consultez Développement d’applications ASP.NET Core avec Docker sur HTTPS.

Cet échantillon exige Docker 17.06 ou version ultérieure du client Docker.

Prérequis

Le Kit de développement logiciel (SDK) .NET Core 2.2 ou version ultérieure est requis pour certaines des instructions de ce document.

Certificats

Un certificat d’une autorité de certification est requis pour l’hébergement en production d’un domaine. Let's Encrypt est une autorité de certification qui propose des certificats gratuits.

Ce document utilise des certificats de développement auto-signés pour héberger des images prédéfinies sur localhost. Les instructions sont similaires à l’utilisation de certificats de production.

Pour les certificats de production :

  • L’outil dotnet dev-certs n’est pas obligatoire.
  • Les certificats n’ont pas besoin d’être stockés à l’emplacement utilisé dans les instructions. Stockez les certificats à n’importe quel emplacement en dehors du répertoire du site.

Les instructions contenues dans la section suivante montent en volume des certificats dans des conteneurs à l’aide de la volumes propriété dans docker-compose.yml. Vous pouvez ajouter des certificats dans des images conteneur avec une COPY commande dans un fichier Dockerfile, mais ce n’est pas recommandé. La copie de certificats dans une image n’est pas recommandée pour les raisons suivantes :

  • Il est difficile d’utiliser la même image pour les tests avec des certificats de développeur.
  • Il est difficile d’utiliser la même image pour l’hébergement avec des certificats de production.
  • Il existe un risque important de divulgation de certificat.

Démarrage d’un conteneur avec la prise en charge https à l’aide de docker compose

Suivez les instructions suivantes pour la configuration de votre système d’exploitation.

Windows utilisant des conteneurs Linux

Générez un certificat et configurez l’ordinateur local :

dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx"  -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Commande précédente utilisant l’interface CLI .NET :

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Dans les commandes précédentes, remplacez par $CREDENTIAL_PLACEHOLDER$ un mot de passe.

Créez un fichier docker-compose.debug.yml avec le contenu suivant :

version: '3.4'

services:
  webapp:
    image: mcr.microsoft.com/dotnet/samples:aspnetapp
    ports:
      - 80
      - 443
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
    volumes:
      - ~/.aspnet/https:/https:ro

Le mot de passe spécifié dans le fichier docker compose doit correspondre au mot de passe utilisé pour le certificat.

Démarrer le conteneur avec ASP.NET Core configuré pour HTTPS :

docker-compose -f "docker-compose.debug.yml" up -d

macOS ou Linux

Générez un certificat et configurez l’ordinateur local :

dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Sur Linux, dotnet dev-certs https --trust nécessite le kit de développement logiciel .NET 9 et versions ultérieures. Pour Linux avec le SDK.NET 8.0.401 et versions antérieures, consultez la documentation de votre distribution Linux concernant l’approbation des certificats.

Dans les commandes précédentes, remplacez par $CREDENTIAL_PLACEHOLDER$ un mot de passe.

Créez un fichier docker-compose.debug.yml avec le contenu suivant :

version: '3.4'

services:
  webapp:
    image: mcr.microsoft.com/dotnet/samples:aspnetapp
    ports:
      - 80
      - 443
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
    volumes:
      - ~/.aspnet/https:/https:ro

Le mot de passe spécifié dans le fichier docker compose doit correspondre au mot de passe utilisé pour le certificat.

Démarrer le conteneur avec ASP.NET Core configuré pour HTTPS :

docker-compose -f "docker-compose.debug.yml" up -d

Windows utilisant des conteneurs Windows

Générez un certificat et configurez l’ordinateur local :

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Dans les commandes précédentes, remplacez par $CREDENTIAL_PLACEHOLDER$ un mot de passe.

Créez un fichier docker-compose.debug.yml avec le contenu suivant :

version: '3.4'

services:
  webapp:
    image: mcr.microsoft.com/dotnet/samples:aspnetapp
    ports:
      - 80
      - 443
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
    volumes:
      - ${USERPROFILE}\.aspnet\https:C:\https:ro

Le mot de passe spécifié dans le fichier docker compose doit correspondre au mot de passe utilisé pour le certificat.

Démarrer le conteneur avec ASP.NET Core configuré pour HTTPS :

docker-compose -f "docker-compose.debug.yml" up -d

Voir aussi

ASP.NET Core utilise HTTPS par défaut. HTTPS s’appuie sur des certificats pour l’approbation, l’identity et le chiffrement.

Ce document explique comment exécuter des images conteneur prédéfinies avec HTTPS.

Pour les scénarios de développement, consultez Développement d’applications ASP.NET Core avec Docker sur HTTPS.

Cet échantillon exige Docker 17.06 ou version ultérieure du client Docker.

Prérequis

Le Kit de développement logiciel (SDK) .NET Core 2.2 ou version ultérieure est requis pour certaines des instructions de ce document.

Certificats

Un certificat d’une autorité de certification est requis pour l’hébergement en production d’un domaine. Let's Encrypt est une autorité de certification qui propose des certificats gratuits.

Ce document utilise des certificats de développement auto-signés pour héberger des images prédéfinies sur localhost. Les instructions sont similaires à l’utilisation de certificats de production.

Pour les certificats de production :

  • L’outil dotnet dev-certs n’est pas obligatoire.
  • Les certificats n’ont pas besoin d’être stockés à l’emplacement utilisé dans les instructions. Stockez les certificats à n’importe quel emplacement en dehors du répertoire du site.

Les instructions contenues dans la section suivante montent en volume des certificats dans des conteneurs à l’aide de la volumes propriété dans docker-compose.yml. Vous pouvez ajouter des certificats dans des images conteneur avec une COPY commande dans un fichier Dockerfile, mais ce n’est pas recommandé. La copie de certificats dans une image n’est pas recommandée pour les raisons suivantes :

  • Il est difficile d’utiliser la même image pour les tests avec des certificats de développeur.
  • Il est difficile d’utiliser la même image pour l’hébergement avec des certificats de production.
  • Il existe un risque important de divulgation de certificat.

Démarrage d’un conteneur avec la prise en charge https à l’aide de docker compose

Suivez les instructions suivantes pour la configuration de votre système d’exploitation.

Windows utilisant des conteneurs Linux

Générez un certificat et configurez l’ordinateur local :

dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx"  -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Commande précédente utilisant l’interface CLI .NET :

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Dans les commandes précédentes, remplacez par $CREDENTIAL_PLACEHOLDER$ un mot de passe.

Créez un fichier docker-compose.debug.yml avec le contenu suivant :

version: '3.4'

services:
  webapp:
    image: mcr.microsoft.com/dotnet/samples:aspnetapp
    ports:
      - 80
      - 443
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
    volumes:
      - ~/.aspnet/https:/https:ro

Le mot de passe spécifié dans le fichier docker compose doit correspondre au mot de passe utilisé pour le certificat.

Démarrer le conteneur avec ASP.NET Core configuré pour HTTPS :

docker-compose -f "docker-compose.debug.yml" up -d

macOS ou Linux

Générez un certificat et configurez l’ordinateur local :

dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

dotnet dev-certs https --trust est uniquement pris en charge sur macOS et Windows. Vous devez approuver les certificats sur Linux de la manière prise en charge par votre distribution. Il est probable que vous deviez approuver le certificat dans votre navigateur.

Dans les commandes précédentes, remplacez par $CREDENTIAL_PLACEHOLDER$ un mot de passe.

Créez un fichier docker-compose.debug.yml avec le contenu suivant :

version: '3.4'

services:
  webapp:
    image: mcr.microsoft.com/dotnet/samples:aspnetapp
    ports:
      - 80
      - 443
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
    volumes:
      - ~/.aspnet/https:/https:ro

Le mot de passe spécifié dans le fichier docker compose doit correspondre au mot de passe utilisé pour le certificat.

Démarrer le conteneur avec ASP.NET Core configuré pour HTTPS :

docker-compose -f "docker-compose.debug.yml" up -d

Windows utilisant des conteneurs Windows

Générez un certificat et configurez l’ordinateur local :

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Dans les commandes précédentes, remplacez par $CREDENTIAL_PLACEHOLDER$ un mot de passe.

Créez un fichier docker-compose.debug.yml avec le contenu suivant :

version: '3.4'

services:
  webapp:
    image: mcr.microsoft.com/dotnet/samples:aspnetapp
    ports:
      - 80
      - 443
    environment:
      - ASPNETCORE_ENVIRONMENT=Development
      - ASPNETCORE_URLS=https://+:443;http://+:80
      - ASPNETCORE_Kestrel__Certificates__Default__Password=password
      - ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
    volumes:
      - ${USERPROFILE}\.aspnet\https:C:\https:ro

Le mot de passe spécifié dans le fichier docker compose doit correspondre au mot de passe utilisé pour le certificat.

Démarrer le conteneur avec ASP.NET Core configuré pour HTTPS :

docker-compose -f "docker-compose.debug.yml" up -d

Voir aussi