Hosting di immagini ASP.NET Core con Docker 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 del contenitore predefinite con HTTPS usando l'interfaccia della riga di comando .NET. Per istruzioni su come eseguire Docker nello sviluppo con Visual Studio, vedere Sviluppo di applicazioni principali ASP.NET con Docker su HTTPS.
Questo esempio richiede Docker 17.06 o versioni successive del client Docker.
Prerequisiti
.NET SDK corrente.
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. Il certificato generato da dotnet dev-certs
è destinato all'uso solo con localhost
e non deve essere usato in un ambiente come Kubernetes. Per supportare HTTPS all'interno di un cluster Kubernetes, usare gli strumenti forniti da Gestisci certificati TLS in un cluster per configurare TLS all'interno dei pod.
Usare dotnet dev-certs
per creare certificati autofirmato per lo sviluppo e il test.
Per i certificati di produzione:
- Lo
dotnet dev-certs
strumento non è obbligatorio. - I certificati non devono essere archiviati nel percorso usato nelle istruzioni. Qualsiasi posizione dovrebbe funzionare, anche se l'archiviazione dei certificati all'interno della directory del sito non è consigliata.
Le istruzioni contenute nella sezione seguente montano i certificati in contenitori usando l'opzione della riga di comando di -v
Docker. È 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:
- È difficile usare la stessa immagine per i test con i certificati per sviluppatori.
- È difficile usare la stessa immagine per l'hosting con certificati di produzione.
- Esiste un rischio significativo di divulgazione dei certificati.
Esecuzione di immagini del contenitore predefinite con HTTPS
Usare le istruzioni seguenti per la configurazione del sistema operativo.
Windows con contenitori Linux
Generare un 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.
Eseguire l'immagine del contenitore con ASP.NET Core configurato per HTTPS in una shell dei comandi:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
Nel codice precedente sostituire <CREDENTIAL_PLACEHOLDER>
con la password. La password deve corrispondere alla password usata per il certificato.
Quando si usa PowerShell, sostituire %USERPROFILE%
con $env:USERPROFILE
.
Nota: il certificato in questo caso deve essere un .pfx
file. L'uso di un .crt
file o .key
con o senza la password non è supportato con il contenitore di esempio. Ad esempio, quando si specifica un .crt
file, il contenitore può restituire messaggi di errore, ad esempio "Ssl in modalità server deve usare un certificato con la chiave privata associata". Quando si usa WSL, convalidare il percorso di montaggio per assicurarsi che il certificato venga caricato correttamente.
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.
Eseguire l'immagine del contenitore con ASP.NET Core configurato per HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v ${HOME}/.aspnet/https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
Nel codice precedente sostituire <CREDENTIAL_PLACEHOLDER>
con la password. La password deve corrispondere alla password usata per il certificato.
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. Quando si usa PowerShell, sostituire %USERPROFILE%
con $env:USERPROFILE
.
Eseguire l'immagine del contenitore con ASP.NET Core configurato per HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=c:\https\aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:C:\https\ --user ContainerAdministrator mcr.microsoft.com/dotnet/samples:aspnetapp
NOTA: <CREDENTIAL_PLACEHOLDER>
è un segnaposto per la password predefinita dei Kestrel certificati.
La password deve corrispondere alla password usata per il certificato. Quando si usa PowerShell, sostituire %USERPROFILE%
con $env:USERPROFILE
.
Developing ASP.NET Core Applications with Docker over HTTPS (Sviluppo di applicazioni ASP.NET Core con Docker su HTTPS)
Per informazioni ed esempi su come sviluppare applicazioni ASP.NET Core con HTTPS nei contenitori Docker, vedere Sviluppo di applicazioni ASP.NET Core con Docker.
Vedi anche
- Developing ASP.NET Core Applications with Docker over HTTPS (Sviluppo di applicazioni ASP.NET Core con Docker su HTTPS)
dotnet dev-certs
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 del contenitore predefinite con HTTPS usando l'interfaccia della riga di comando .NET. Per istruzioni su come eseguire Docker nello sviluppo con Visual Studio, vedere Sviluppo di applicazioni principali ASP.NET con Docker su HTTPS.
Questo esempio richiede Docker 17.06 o versioni successive del client Docker.
Prerequisiti
.NET SDK corrente.
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. Il certificato generato da dotnet dev-certs
è destinato all'uso solo con localhost
e non deve essere usato in un ambiente come Kubernetes. Per supportare HTTPS all'interno di un cluster Kubernetes, usare gli strumenti forniti da Gestisci certificati TLS in un cluster per configurare TLS all'interno dei pod.
Usare dotnet dev-certs
per creare certificati autofirmato per lo sviluppo e il test.
Per i certificati di produzione:
- Lo
dotnet dev-certs
strumento non è obbligatorio. - I certificati non devono essere archiviati nel percorso usato nelle istruzioni. Qualsiasi posizione dovrebbe funzionare, anche se l'archiviazione dei certificati all'interno della directory del sito non è consigliata.
Le istruzioni contenute nella sezione seguente montano i certificati in contenitori usando l'opzione della riga di comando di -v
Docker. È 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:
- È difficile usare la stessa immagine per i test con i certificati per sviluppatori.
- È difficile usare la stessa immagine per l'hosting con certificati di produzione.
- Esiste un rischio significativo di divulgazione dei certificati.
Esecuzione di immagini del contenitore predefinite con HTTPS
Usare le istruzioni seguenti per la configurazione del sistema operativo.
Windows con contenitori Linux
Generare un 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.
Eseguire l'immagine del contenitore con ASP.NET Core configurato per HTTPS in una shell dei comandi:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
Nel codice precedente sostituire <CREDENTIAL_PLACEHOLDER>
con la password. La password deve corrispondere alla password usata per il certificato.
Quando si usa PowerShell, sostituire %USERPROFILE%
con $env:USERPROFILE
.
Nota: il certificato in questo caso deve essere un .pfx
file. L'uso di un .crt
file o .key
con o senza la password non è supportato con il contenitore di esempio. Ad esempio, quando si specifica un .crt
file, il contenitore può restituire messaggi di errore, ad esempio "Ssl in modalità server deve usare un certificato con la chiave privata associata". Quando si usa WSL, convalidare il percorso di montaggio per assicurarsi che il certificato venga caricato correttamente.
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.
Eseguire l'immagine del contenitore con ASP.NET Core configurato per HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v ${HOME}/.aspnet/https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
Nel codice precedente sostituire <CREDENTIAL_PLACEHOLDER>
con la password. La password deve corrispondere alla password usata per il certificato.
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. Quando si usa PowerShell, sostituire %USERPROFILE%
con $env:USERPROFILE
.
Eseguire l'immagine del contenitore con ASP.NET Core configurato per HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=c:\https\aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:C:\https\ --user ContainerAdministrator mcr.microsoft.com/dotnet/samples:aspnetapp
NOTA: <CREDENTIAL_PLACEHOLDER>
è un segnaposto per la password predefinita dei Kestrel certificati.
La password deve corrispondere alla password usata per il certificato. Quando si usa PowerShell, sostituire %USERPROFILE%
con $env:USERPROFILE
.
Developing ASP.NET Core Applications with Docker over HTTPS (Sviluppo di applicazioni ASP.NET Core con Docker su HTTPS)
Per informazioni ed esempi su come sviluppare applicazioni ASP.NET Core con HTTPS nei contenitori Docker, vedere Sviluppo di applicazioni ASP.NET Core con Docker.
Vedi anche
- Developing ASP.NET Core Applications with Docker over HTTPS (Sviluppo di applicazioni ASP.NET Core con Docker su HTTPS)
dotnet dev-certs