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