Dela via


Hosta ASP.NET Core-avbildningar med Docker Compose över HTTPS

ASP.NET Core använder HTTPS som standard. HTTPS- förlitar sig på certifikat för förtroende, identitet och kryptering.

Det här dokumentet förklarar hur du kör fördefinierade containeravbildningar med HTTPS.

Se Utveckla ASP.NET Core-program med Docker via HTTPS för utvecklingsscenarier.

Det här exemplet kräver Docker 17.06 eller senare av Docker-klienten.

Förutsättningar

.NET Core 2.2 SDK eller senare krävs för några av instruktionerna i det här dokumentet.

Certifikaten

Ett certifikat från en certifikatutfärdare behövs för produktionshosting för en domän. Let's Encrypt är en certifikatutfärdare som erbjuder kostnadsfria certifikat.

Det här dokumentet använder självsignerade utvecklingscertifikat för att hosta förbyggda bilder via localhost. Instruktionerna liknar användning av produktionscertifikat.

För produktionscertifikat:

  • Verktyget dotnet dev-certs krävs inte.
  • Certifikat behöver inte lagras på den plats som används i anvisningarna. Lagra certifikaten på valfri plats utanför platskatalogen.

Anvisningarna i följande avsnitt volym montera certifikat i containrar med hjälp av volumes egenskapen i docker-compose.yml. Du kan lägga till certifikat i containeravbildningar med ett COPY kommando i en Dockerfile, men det rekommenderas inte. Kopiering av certifikat till en avbildning rekommenderas inte av följande skäl:

  • Det gör det svårt att använda samma avbildning för testning med utvecklarcertifikat.
  • Det gör det svårt att använda samma bild med produktionscertifikat för Hosting.
  • Det finns en betydande risk för att certifikatet avslöjas.

Starta en container med https-stöd med hjälp av docker compose

Använd följande instruktioner för konfigurationen av operativsystemet.

Windows med Linux-containrar

Generera certifikat och konfigurera den lokala datorn:

dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx"  -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Föregående kommando med .NET CLI:

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Ersätt $CREDENTIAL_PLACEHOLDER$ med ett lösenord i föregående kommandon.

Skapa en docker-compose.debug.yml fil med följande innehåll:

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

Lösenordet som anges i docker compose-filen måste matcha lösenordet som används för certifikatet.

Starta containern med ASP.NET Core konfigurerad för HTTPS:

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

macOS eller Linux

Generera certifikat och konfigurera den lokala datorn:

dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

I Linux dotnet dev-certs https --trust kräver .NET 9 eller senare SDK. För Linux på .NET 8.0.401 eller tidigare SDK kan du läsa dokumentationen för Linux-distributionen för att lita på ett certifikat.

Ersätt $CREDENTIAL_PLACEHOLDER$ med ett lösenord i föregående kommandon.

Skapa en docker-compose.debug.yml fil med följande innehåll:

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

Lösenordet som anges i docker compose-filen måste matcha lösenordet som används för certifikatet.

Starta containern med ASP.NET Core konfigurerad för HTTPS:

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

Windows med Windows-kontainrar

Generera certifikat och konfigurera den lokala datorn:

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Ersätt $CREDENTIAL_PLACEHOLDER$ med ett lösenord i föregående kommandon.

Skapa en docker-compose.debug.yml fil med följande innehåll:

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

Lösenordet som anges i docker compose-filen måste matcha lösenordet som används för certifikatet.

Starta containern med ASP.NET Core konfigurerad för HTTPS:

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

Se även

ASP.NET Core använder HTTPS som standard. HTTPS- förlitar sig på certifikat för förtroende, identitet och kryptering.

Det här dokumentet förklarar hur du kör fördefinierade containeravbildningar med HTTPS.

Se Utveckla ASP.NET Core-program med Docker via HTTPS för utvecklingsscenarier.

Det här exemplet kräver Docker 17.06 eller senare av Docker-klienten.

Förutsättningar

.NET Core 2.2 SDK eller senare krävs för några av instruktionerna i det här dokumentet.

Certifikaten

Ett certifikat från en certifikatutfärdare behövs för produktionshosting för en domän. Let's Encrypt är en certifikatutfärdare som erbjuder kostnadsfria certifikat.

Det här dokumentet använder självsignerade utvecklingscertifikat för att hosta förbyggda bilder via localhost. Instruktionerna liknar användning av produktionscertifikat.

För produktionscertifikat:

  • Verktyget dotnet dev-certs krävs inte.
  • Certifikat behöver inte lagras på den plats som används i anvisningarna. Lagra certifikaten på valfri plats utanför platskatalogen.

Anvisningarna i följande avsnitt volym montera certifikat i containrar med hjälp av volumes egenskapen i docker-compose.yml. Du kan lägga till certifikat i containeravbildningar med ett COPY kommando i en Dockerfile, men det rekommenderas inte. Kopiering av certifikat till en avbildning rekommenderas inte av följande skäl:

  • Det gör det svårt att använda samma avbildning för testning med utvecklarcertifikat.
  • Det gör det svårt att använda samma bild med produktionscertifikat för Hosting.
  • Det finns en betydande risk för att certifikatet avslöjas.

Starta en container med https-stöd med hjälp av docker compose

Använd följande instruktioner för konfigurationen av operativsystemet.

Windows med Linux-containrar

Generera certifikat och konfigurera den lokala datorn:

dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx"  -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Föregående kommando med .NET CLI:

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Ersätt $CREDENTIAL_PLACEHOLDER$ med ett lösenord i föregående kommandon.

Skapa en docker-compose.debug.yml fil med följande innehåll:

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

Lösenordet som anges i docker compose-filen måste matcha lösenordet som används för certifikatet. Ersätt -\0pw- med ett lösenord i föregående kommandon.

Starta containern med ASP.NET Core konfigurerad för HTTPS:

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

macOS eller Linux

Generera certifikat och konfigurera den lokala datorn:

dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

dotnet dev-certs https --trust stöds endast i macOS och Windows. Du måste lita på certifikat på Linux på det sätt som stöds av distributionen. Det är troligt att du behöver lita på certifikatet i webbläsaren.

Ersätt $CREDENTIAL_PLACEHOLDER$ med ett lösenord i föregående kommandon.

Skapa en docker-compose.debug.yml fil med följande innehåll:

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

Lösenordet som anges i docker compose-filen måste matcha lösenordet som används för certifikatet.

Starta containern med ASP.NET Core konfigurerad för HTTPS:

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

Windows med Windows-kontainrar

Generera certifikat och konfigurera den lokala datorn:

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Ersätt $CREDENTIAL_PLACEHOLDER$ med ett lösenord i föregående kommandon.

Skapa en docker-compose.debug.yml fil med följande innehåll:

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

Se även