Hostování ASP.NET základních imagí pomocí Docker Compose přes HTTPS
ASP.NET Core ve výchozím nastavení používá protokol HTTPS. PROTOKOL HTTPS spoléhá na certifikáty pro vztah důvěryhodnosti identitya šifrování.
Tento dokument vysvětluje, jak spouštět předem připravené image kontejnerů pomocí protokolu HTTPS.
Viz Vývoj ASP.NET základních aplikací pomocí Dockeru přes HTTPS pro vývojové scénáře.
Tato ukázka vyžaduje Docker 17.06 nebo novější klienta Dockeru.
Požadavky
Pro některé pokyny v tomto dokumentu se vyžaduje sada .NET Core 2.2 SDK nebo novější.
Certifikáty
Pro produkční hostování domény se vyžaduje certifikát od certifikační autority. Let's Encrypt je certifikační autorita, která nabízí bezplatné certifikáty.
Tento dokument používá vývojové certifikáty podepsané svým držitelem k hostování předdefinovaných imagí.localhost
Pokyny jsou podobné použití produkčních certifikátů.
Pro produkční certifikáty:
- Nástroj
dotnet dev-certs
není povinný. - Certifikáty nemusí být uložené v umístění použitém v pokynech. Uložte certifikáty do libovolného umístění mimo adresář lokality.
Pokyny obsažené v následující části připojují certifikáty ke kontejnerům pomocí volumes
vlastnosti v docker-compose.yml. Certifikáty můžete přidat do imagí kontejnerů pomocí COPY
příkazu v souboru Dockerfile, ale nedoporučuje se. Kopírování certifikátů do image se nedoporučuje z následujících důvodů:
- Kvůli testování pomocí certifikátů vývojářů je obtížné použít stejnou image.
- Kvůli hostování s produkčními certifikáty je obtížné použít stejnou image.
- Existuje značné riziko zveřejnění certifikátu.
Spuštění kontejneru s podporou https pomocí docker compose
Pro konfiguraci operačního systému použijte následující pokyny.
Windows s využitím linuxových kontejnerů
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Předchozí příkaz pomocí rozhraní příkazového řádku .NET:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
V předchozích příkazech nahraďte $CREDENTIAL_PLACEHOLDER$
heslem.
Vytvořte soubor docker-compose.debug.yml s následujícím obsahem:
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
Heslo zadané v souboru docker compose musí odpovídat heslu použitému pro certifikát.
Spusťte kontejner s nakonfigurovaným ASP.NET Core pro HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
macOS nebo Linux
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
V Linuxu dotnet dev-certs https --trust
vyžaduje sadu .NET 9 SDK nebo novější. Informace o Linuxu v sadě .NET 8.0.401 SDK a starších verzích najdete v dokumentaci k distribuci Linuxu pro důvěryhodnost certifikátu.
V předchozích příkazech nahraďte $CREDENTIAL_PLACEHOLDER$
heslem.
Vytvořte soubor docker-compose.debug.yml s následujícím obsahem:
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
Heslo zadané v souboru docker compose musí odpovídat heslu použitému pro certifikát.
Spusťte kontejner s nakonfigurovaným ASP.NET Core pro HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Windows využívající kontejnery Windows
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
V předchozích příkazech nahraďte $CREDENTIAL_PLACEHOLDER$
heslem.
Vytvořte soubor docker-compose.debug.yml s následujícím obsahem:
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
Heslo zadané v souboru docker compose musí odpovídat heslu použitému pro certifikát.
Spusťte kontejner s nakonfigurovaným ASP.NET Core pro HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Viz také
ASP.NET Core ve výchozím nastavení používá protokol HTTPS. PROTOKOL HTTPS spoléhá na certifikáty pro vztah důvěryhodnosti identitya šifrování.
Tento dokument vysvětluje, jak spouštět předem připravené image kontejnerů pomocí protokolu HTTPS.
Viz Vývoj ASP.NET základních aplikací pomocí Dockeru přes HTTPS pro vývojové scénáře.
Tato ukázka vyžaduje Docker 17.06 nebo novější klienta Dockeru.
Požadavky
Pro některé pokyny v tomto dokumentu se vyžaduje sada .NET Core 2.2 SDK nebo novější.
Certifikáty
Pro produkční hostování domény se vyžaduje certifikát od certifikační autority. Let's Encrypt je certifikační autorita, která nabízí bezplatné certifikáty.
Tento dokument používá vývojové certifikáty podepsané svým držitelem k hostování předdefinovaných imagí.localhost
Pokyny jsou podobné použití produkčních certifikátů.
Pro produkční certifikáty:
- Nástroj
dotnet dev-certs
není povinný. - Certifikáty nemusí být uložené v umístění použitém v pokynech. Uložte certifikáty do libovolného umístění mimo adresář lokality.
Pokyny obsažené v následující části připojují certifikáty ke kontejnerům pomocí volumes
vlastnosti v docker-compose.yml. Certifikáty můžete přidat do imagí kontejnerů pomocí COPY
příkazu v souboru Dockerfile, ale nedoporučuje se. Kopírování certifikátů do image se nedoporučuje z následujících důvodů:
- Kvůli testování pomocí certifikátů vývojářů je obtížné použít stejnou image.
- Kvůli hostování s produkčními certifikáty je obtížné použít stejnou image.
- Existuje značné riziko zveřejnění certifikátu.
Spuštění kontejneru s podporou https pomocí docker compose
Pro konfiguraci operačního systému použijte následující pokyny.
Windows s využitím linuxových kontejnerů
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
Předchozí příkaz pomocí rozhraní příkazového řádku .NET:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
V předchozích příkazech nahraďte $CREDENTIAL_PLACEHOLDER$
heslem.
Vytvořte soubor docker-compose.debug.yml s následujícím obsahem:
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
Heslo zadané v souboru docker compose musí odpovídat heslu použitému pro certifikát.
Spusťte kontejner s nakonfigurovaným ASP.NET Core pro HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
macOS nebo Linux
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
dotnet dev-certs https --trust
je podporován pouze v systémech macOS a Windows. Certifikáty v Linuxu musíte důvěřovat způsobem, který vaše distribuce podporuje. Je pravděpodobné, že budete muset důvěřovat certifikátu v prohlížeči.
V předchozích příkazech nahraďte $CREDENTIAL_PLACEHOLDER$
heslem.
Vytvořte soubor docker-compose.debug.yml s následujícím obsahem:
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
Heslo zadané v souboru docker compose musí odpovídat heslu použitému pro certifikát.
Spusťte kontejner s nakonfigurovaným ASP.NET Core pro HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Windows využívající kontejnery Windows
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
V předchozích příkazech nahraďte $CREDENTIAL_PLACEHOLDER$
heslem.
Vytvořte soubor docker-compose.debug.yml s následujícím obsahem:
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
Heslo zadané v souboru docker compose musí odpovídat heslu použitému pro certifikát.
Spusťte kontejner s nakonfigurovaným ASP.NET Core pro HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d