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, identityve şifreleme sertifikalarını kullanı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 localhostönceden oluşturulmuş görüntüleri barındırmak için otomatik olarak imzalanan geliştirme sertifikalarını kullanır. 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. Dockerfile içindeki bir COPY 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=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

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 SDK veya üzerini gerektirir. .NET 8.0.401 SDK ve önceki sürümlerde Linux için, Linux dağıtımınızın sertifikaya güvenme 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=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=password
      - 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, identityve şifreleme sertifikalarını kullanı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 localhostönceden oluşturulmuş görüntüleri barındırmak için otomatik olarak imzalanan geliştirme sertifikalarını kullanır. 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. Dockerfile içindeki bir COPY 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=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

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=password
      - 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.