Hostování imagí ASP.NET Core pomocí Docker Compose přes HTTPS

ASP.NET Core ve výchozím nastavení používá HTTPS. HTTPS spoléhá na certifikáty pro důvěryhodnost, identitu a šifrování.

Tento dokument vysvětluje, jak spouštět předem připravené image kontejnerů pomocí protokolu HTTPS.

Viz Vývoj aplikací ASP.NET Core pomocí Dockeru přes HTTPS pro vývojové scénáře.

Tato ukázka vyžaduje Docker 17.06 nebo novější klient Dockeru.

Předpoklady

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ývojářské certifikáty podepsané sebou samými k hostování předem sestavených imagí přes localhost. Pokyny jsou podobné pokynům pro použití produkčních certifikátů.

Pro produkční certifikáty:

  • Nástroj dotnet dev-certs není vyžadován.
  • 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ář webu.

Pokyny obsažené v následující části popisují, jak připojit certifikáty ke kontejnerům pomocí vlastnosti volumes v souboru 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=-\0pw-
      - 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 .NET 9 nebo novější sadu SDK. Pro informace o důvěryhodnosti certifikátu v Linuxu s .NET 8.0.401 nebo starší verzí SDK si prohlédněte dokumentaci k vaší distribuci Linuxu.

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=-\0pw-
      - 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=-\0pw-
      - 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 používá ve výchozím nastavení protokol HTTPS. HTTPS spoléhá na certifikáty pro důvěryhodnost, identitu a šifrování.

Tento dokument vysvětluje, jak spouštět předem připravené image kontejnerů pomocí protokolu HTTPS.

Viz Vývoj aplikací ASP.NET Core pomocí Dockeru přes HTTPS pro vývojové scénáře.

Tato ukázka vyžaduje Docker 17.06 nebo novějšího klienta Dockeru.

Předpoklady

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é sebou samými k hostování předem sestavených imagí prostřednictvím localhost. Pokyny jsou podobné pokynům pro použití produkčních certifikátů.

Pro produkční certifikáty:

  • Nástroj dotnet dev-certs není vyžadován.
  • 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ář webu.

Pokyny obsažené v následující části popisují připojení certifikátů do kontejnerů pomocí vlastnosti volumes v souboru 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 používající linuxové kontejnery

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=-\0pw-
      - 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. V předchozích příkazech nahraďte -\0pw- heslem.

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átům 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=-\0pw-
      - ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
    volumes:
      - ${USERPROFILE}\.aspnet\https:C:\https:ro
The password specified in the docker compose file must match the password used for the certificate. In the preceding commands, replace `-\0pw-` with a password.


Start the container with ASP.NET Core configured for HTTPS:

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

Viz také