Hosting di immagini ASP.NET Core con Docker Compose su HTTPS
ASP.NET Core usa HTTPS per impostazione predefinita. HTTPS si basa sui certificati per l'attendibilità, identitye la crittografia.
Questo documento illustra come eseguire immagini di contenitori predefinite con HTTPS.
Vedere Sviluppo di applicazioni principali ASP.NET con Docker su HTTPS per scenari di sviluppo.
Questo esempio richiede Docker 17.06 o versioni successive del client Docker.
Prerequisiti
. NET Core 2.2 SDK o versione successiva è necessario per alcune delle istruzioni contenute in questo documento.
Certificati
Un certificato di un'autorità di certificazione è necessario per l'hosting di produzione per un dominio. Let's Encrypt è un'autorità di certificazione che offre certificati gratuiti.
Questo documento usa certificati di sviluppo autofirmato per l'hosting di immagini predefinite su localhost
. Le istruzioni sono simili all'uso dei certificati di produzione.
Per i certificati di produzione:
- Lo
dotnet dev-certs
strumento non è obbligatorio. - I certificati non devono essere archiviati nel percorso usato nelle istruzioni. Archiviare i certificati in qualsiasi posizione esterna alla directory del sito.
Le istruzioni contenute nella sezione seguente montano i certificati in contenitori usando la volumes
proprietà in docker-compose.yml. È possibile aggiungere certificati alle immagini del contenitore con un COPY
comando in un Dockerfile, ma non è consigliabile. La copia dei certificati in un'immagine non è consigliata per i motivi seguenti:
- Rende difficile usare la stessa immagine per i test con i certificati per sviluppatori.
- Rende difficile usare la stessa immagine per l'hosting con certificati di produzione.
- Esiste un rischio significativo di divulgazione dei certificati.
Avvio di un contenitore con supporto https con docker compose
Usare le istruzioni seguenti per la configurazione del sistema operativo.
Windows con contenitori Linux
Generare il certificato e configurare il computer locale:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Comando precedente che usa l'interfaccia della riga di comando di .NET:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Nei comandi precedenti sostituire $CREDENTIAL_PLACEHOLDER$
con una password.
Creare un file docker-compose.debug.yml con il contenuto seguente:
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
La password specificata nel file docker compose deve corrispondere alla password usata per il certificato.
Avviare il contenitore con ASP.NET Core configurato per HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
macOS o Linux
Generare il certificato e configurare il computer locale:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
In Linux è dotnet dev-certs https --trust
necessario .NET 9 SDK o versione successiva. Per Linux in .NET 8.0.401 SDK e versioni precedenti, vedere la documentazione della distribuzione linux per considerare attendibile un certificato.
Nei comandi precedenti sostituire $CREDENTIAL_PLACEHOLDER$
con una password.
Creare un file docker-compose.debug.yml con il contenuto seguente:
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
La password specificata nel file docker compose deve corrispondere alla password usata per il certificato.
Avviare il contenitore con ASP.NET Core configurato per HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Windows con l’uso di contenitori Windows
Generare il certificato e configurare il computer locale:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Nei comandi precedenti sostituire $CREDENTIAL_PLACEHOLDER$
con una password.
Creare un file docker-compose.debug.yml con il contenuto seguente:
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
La password specificata nel file docker compose deve corrispondere alla password usata per il certificato.
Avviare il contenitore con ASP.NET Core configurato per HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Vedi anche
ASP.NET Core usa HTTPS per impostazione predefinita. HTTPS si basa sui certificati per l'attendibilità, identitye la crittografia.
Questo documento illustra come eseguire immagini di contenitori predefinite con HTTPS.
Vedere Sviluppo di applicazioni principali ASP.NET con Docker su HTTPS per scenari di sviluppo.
Questo esempio richiede Docker 17.06 o versioni successive del client Docker.
Prerequisiti
. NET Core 2.2 SDK o versione successiva è necessario per alcune delle istruzioni contenute in questo documento.
Certificati
Un certificato di un'autorità di certificazione è necessario per l'hosting di produzione per un dominio. Let's Encrypt è un'autorità di certificazione che offre certificati gratuiti.
Questo documento usa certificati di sviluppo autofirmato per l'hosting di immagini predefinite su localhost
. Le istruzioni sono simili all'uso dei certificati di produzione.
Per i certificati di produzione:
- Lo
dotnet dev-certs
strumento non è obbligatorio. - I certificati non devono essere archiviati nel percorso usato nelle istruzioni. Archiviare i certificati in qualsiasi posizione esterna alla directory del sito.
Le istruzioni contenute nella sezione seguente montano i certificati in contenitori usando la volumes
proprietà in docker-compose.yml. È possibile aggiungere certificati alle immagini del contenitore con un COPY
comando in un Dockerfile, ma non è consigliabile. La copia dei certificati in un'immagine non è consigliata per i motivi seguenti:
- Rende difficile usare la stessa immagine per i test con i certificati per sviluppatori.
- Rende difficile usare la stessa immagine per l'hosting con certificati di produzione.
- Esiste un rischio significativo di divulgazione dei certificati.
Avvio di un contenitore con supporto https con docker compose
Usare le istruzioni seguenti per la configurazione del sistema operativo.
Windows con contenitori Linux
Generare il certificato e configurare il computer locale:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Comando precedente che usa l'interfaccia della riga di comando di .NET:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Nei comandi precedenti sostituire $CREDENTIAL_PLACEHOLDER$
con una password.
Creare un file docker-compose.debug.yml con il contenuto seguente:
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
La password specificata nel file docker compose deve corrispondere alla password usata per il certificato.
Avviare il contenitore con ASP.NET Core configurato per HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
macOS o Linux
Generare il certificato e configurare il computer locale:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
dotnet dev-certs https --trust
è supportato solo in macOS e Windows. È necessario considerare attendibili i certificati in Linux nel modo supportato dalla distribuzione. È probabile che sia necessario considerare attendibile il certificato nel browser.
Nei comandi precedenti sostituire $CREDENTIAL_PLACEHOLDER$
con una password.
Creare un file docker-compose.debug.yml con il contenuto seguente:
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
La password specificata nel file docker compose deve corrispondere alla password usata per il certificato.
Avviare il contenitore con ASP.NET Core configurato per HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Windows con l’uso di contenitori Windows
Generare il certificato e configurare il computer locale:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Nei comandi precedenti sostituire $CREDENTIAL_PLACEHOLDER$
con una password.
Creare un file docker-compose.debug.yml con il contenuto seguente:
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
La password specificata nel file docker compose deve corrispondere alla password usata per il certificato.
Avviare il contenitore con ASP.NET Core configurato per HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d