Aracılığıyla paylaş


HTTPS üzerinden Docker Compose ile ASP.NET Core görüntüleri barındırma

ASP.NET Core varsayılan olarak HTTPS kullanır. HTTPS güven, kimlik ve şifreleme için sertifikalara dayanır.

Bu belgede, HTTPS ile önceden oluşturulmuş kapsayıcı görüntülerinin nasıl çalıştırılacakları açıklanmaktadır.

Geliştirme senaryoları için bkz . HTTPS üzerinden Docker ile ASP.NET Core Uygulamaları Geliştirme.

Bu örnek, Docker istemcisinin Docker 17.06 veya sonraki bir sürümünü gerektirir.

Önkoşullar

Bu belgedeki bazı yönergeler için .NET Core 2.2 SDK veya üzeri gereklidir.

Sertifikalar

Bir etki alanı için üretim barındırma için sertifika yetkilisinden bir sertifika gereklidir. Let's Encrypt ücretsiz sertifikalar sunan bir sertifika yetkilisidir.

Bu belge, üzerinde önceden oluşturulmuş görüntüleri barındırmak için otomatik olarak imzalanan geliştirme sertifikalarınılocalhost. Yönergeler, üretim sertifikalarını kullanmaya benzer.

Üretim sertifikaları için:

  • Araç dotnet dev-certs gerekli değildir.
  • Sertifikaların yönergelerde kullanılan konumda depolanması gerekmez. Sertifikaları site dizini dışında herhangi bir konumda depolayın.

Aşağıdaki bölümde yer alan yönergeler birim bağlama sertifikaları docker-compose.yml özelliğini kullanarak volumes kapsayıcılara bağlar. DockerfileCOPYbir komutla kapsayıcı görüntülerine sertifika ekleyebilirsiniz, ancak önerilmez. Aşağıdaki nedenlerden dolayı sertifikaların bir görüntüye kopyalanması önerilmez:

  • Geliştirici sertifikalarıyla test etmek için aynı görüntüyü kullanmayı zorlaştırır.
  • Üretim sertifikalarıyla barındırma için aynı görüntüyü kullanmayı zorlaştırır.
  • Sertifikanın açığa çıkması önemli bir risktir.

Docker compose kullanarak https desteğiyle kapsayıcı başlatma

İşletim sistemi yapılandırmanız için aşağıdaki yönergeleri kullanın.

Linux kapsayıcılarını kullanan Windows

Sertifika oluşturma ve yerel makineyi yapılandırma:

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

.NET CLI kullanan önceki komut:

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

Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$ .

Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:

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

Docker compose dosyasında belirtilen parola, sertifika için kullanılan parolayla eşleşmelidir.

KAPSAYıCıyı HTTPS için yapılandırılmış ASP.NET Core ile başlatın:

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

macOS veya Linux

Sertifika oluşturma ve yerel makineyi yapılandırma:

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

Linux'ta dotnet dev-certs https --trust .NET 9 veya üzeri SDK gerektirir. Linux üzerinde .NET 8.0.401 veya önceki SDK için, sertifikaya güvenmek üzere Linux dağıtımınızın belgelerine bakın.

Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$ .

Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:

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

Docker compose dosyasında belirtilen parola, sertifika için kullanılan parolayla eşleşmelidir.

KAPSAYıCıyı HTTPS için yapılandırılmış ASP.NET Core ile başlatın:

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

Windows kapsayıcılarını kullanan Windows

Sertifika oluşturma ve yerel makineyi yapılandırma:

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

Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$ .

Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:

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

Docker compose dosyasında belirtilen parola, sertifika için kullanılan parolayla eşleşmelidir.

KAPSAYıCıyı HTTPS için yapılandırılmış ASP.NET Core ile başlatın:

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

Ayrıca bkz.

ASP.NET Core varsayılan olarak HTTPS kullanır. HTTPS güven, kimlik ve şifreleme için sertifikalara dayanır.

Bu belgede, HTTPS ile önceden oluşturulmuş kapsayıcı görüntülerinin nasıl çalıştırılacakları açıklanmaktadır.

Geliştirme senaryoları için bkz . HTTPS üzerinden Docker ile ASP.NET Core Uygulamaları Geliştirme.

Bu örnek, Docker istemcisinin Docker 17.06 veya sonraki bir sürümünü gerektirir.

Önkoşullar

Bu belgedeki bazı yönergeler için .NET Core 2.2 SDK veya üzeri gereklidir.

Sertifikalar

Bir etki alanı için üretim barındırma için sertifika yetkilisinden bir sertifika gereklidir. Let's Encrypt ücretsiz sertifikalar sunan bir sertifika yetkilisidir.

Bu belge, üzerinde önceden oluşturulmuş görüntüleri barındırmak için otomatik olarak imzalanan geliştirme sertifikalarınılocalhost. Yönergeler, üretim sertifikalarını kullanmaya benzer.

Üretim sertifikaları için:

  • Araç dotnet dev-certs gerekli değildir.
  • Sertifikaların yönergelerde kullanılan konumda depolanması gerekmez. Sertifikaları site dizini dışında herhangi bir konumda depolayın.

Aşağıdaki bölümde yer alan yönergeler birim bağlama sertifikaları docker-compose.yml özelliğini kullanarak volumes kapsayıcılara bağlar. DockerfileCOPYbir komutla kapsayıcı görüntülerine sertifika ekleyebilirsiniz, ancak önerilmez. Aşağıdaki nedenlerden dolayı sertifikaların bir görüntüye kopyalanması önerilmez:

  • Geliştirici sertifikalarıyla test etmek için aynı görüntüyü kullanmayı zorlaştırır.
  • Üretim sertifikalarıyla barındırma için aynı görüntüyü kullanmayı zorlaştırır.
  • Sertifikanın açığa çıkması önemli bir risktir.

Docker compose kullanarak https desteğiyle kapsayıcı başlatma

İşletim sistemi yapılandırmanız için aşağıdaki yönergeleri kullanın.

Linux kapsayıcılarını kullanan Windows

Sertifika oluşturma ve yerel makineyi yapılandırma:

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

.NET CLI kullanan önceki komut:

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

Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$ .

Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:

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

Docker compose dosyasında belirtilen parola, sertifika için kullanılan parolayla eşleşmelidir. Önceki komutlarda yerine parola yazın -\0pw- .

KAPSAYıCıyı HTTPS için yapılandırılmış ASP.NET Core ile başlatın:

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

macOS veya Linux

Sertifika oluşturma ve yerel makineyi yapılandırma:

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

dotnet dev-certs https --trust yalnızca macOS ve Windows'ta desteklenir. Linux'taki sertifikalara dağıtımınız tarafından desteklenen şekilde güvenmeniz gerekir. Tarayıcınızda sertifikaya güvenmeniz gerekebilir.

Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$ .

Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:

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

Docker compose dosyasında belirtilen parola, sertifika için kullanılan parolayla eşleşmelidir.

KAPSAYıCıyı HTTPS için yapılandırılmış ASP.NET Core ile başlatın:

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

Windows kapsayıcılarını kullanan Windows

Sertifika oluşturma ve yerel makineyi yapılandırma:

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

Önceki komutlarda yerine parola yazın $CREDENTIAL_PLACEHOLDER$ .

Aşağıdaki içeriğe sahip bir docker-compose.debug.yml dosyası oluşturun:

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

Ayrıca bkz.