Sdílet prostřednictvím


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

Viz také