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

Gönderen Rick Anderson

ASP.NET Core varsayılan olarak HTTPS kullanır. HTTPS güven, kimlik ve şifreleme sertifikalarını kullanır.

Bu belgede , .NET komut satırı arabirimini (CLI) kullanarak HTTPS ile önceden oluşturulmuş kapsayıcı görüntülerinin nasıl çalıştırılacakları açıklanmaktadır. Docker'ı Visual Studio ile geliştirme aşamasında çalıştırma yönergeleri 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.

Ön koşullar

Geçerli .NET SDK'sı.

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. tarafından dotnet dev-certs oluşturulan sertifika yalnızca ile localhost kullanım içindir ve Kubernetes gibi bir ortamda kullanılmamalıdır. Kubernetes kümesinde HTTPS'yi desteklemek için, podlar içinde TLS'yi ayarlamak için Kümede TLS Sertifikalarını Yönetme tarafından sağlanan araçları kullanın.

Geliştirme ve test için otomatik olarak imzalanan sertifikalar oluşturmak için kullanın dotnet dev-certs .

Üretim sertifikaları için:

  • Araç dotnet dev-certs gerekli değildir.
  • Sertifikaların yönergelerde kullanılan konumda depolanması gerekmez. Herhangi bir konum çalışmalıdır, ancak sertifikaların site dizininizde depolanması önerilmez.

Aşağıdaki bölümde yer alan yönergeler Docker'ın -v komut satırı seçeneğini kullanarak sertifikaları kapsayıcılara bağlama. 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ü kullanmak zordur.
  • Üretim sertifikalarıyla barındırma için aynı görüntüyü kullanmak zordur.
  • Sertifikanın açığa çıkması önemli bir risktir.

HTTPS ile önceden oluşturulmuş kapsayıcı görüntülerini çalıştırma

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

Linux kapsayıcılarını kullanan Windows

Bir sertifika oluşturun ve yerel makineyi yapılandırın:

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

Bir komut kabuğunda HTTPS için yapılandırılmış ASP.NET Core ile kapsayıcı görüntüsünü çalıştırın:

docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp

Önceki kodda değerini parolayla değiştirin <CREDENTIAL_PLACEHOLDER> . Parola, sertifika için kullanılan parolayla eşleşmelidir.

PowerShell kullanırken değerini ile $env:USERPROFILEdeğiştirin%USERPROFILE%.

Not: Bu durumda sertifika bir .pfx dosya olmalıdır. .crt Örnek kapsayıcıda parolayla veya parola olmadan bir veya .key dosyasının kullanılması desteklenmez. Örneğin, bir .crt dosya belirtirken kapsayıcı 'Sunucu modu SSL ilişkili özel anahtara sahip bir sertifika kullanmalıdır' gibi hata iletileri döndürebilir. WSL kullanırken, sertifikanın doğru yüklendiğinden emin olmak için bağlama yolunu doğrulayın.

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 üzerindeki 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> .

KAPSAYıCı görüntüsünü HTTPS için yapılandırılmış ASP.NET Core ile çalıştırın:

docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v ${HOME}/.aspnet/https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp

Önceki kodda değerini parolayla değiştirin <CREDENTIAL_PLACEHOLDER> . Parola, sertifika için kullanılan parolayla eşleşmelidir.

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> . PowerShell kullanırken değerini ile $env:USERPROFILEdeğiştirin%USERPROFILE%.

KAPSAYıCı görüntüsünü HTTPS için yapılandırılmış ASP.NET Core ile çalıştırın:

docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=c:\https\aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:C:\https\ --user ContainerAdministrator mcr.microsoft.com/dotnet/samples:aspnetapp

NOT:<CREDENTIAL_PLACEHOLDER> sertifikaların Kestrel varsayılan parolası için bir yer tutucudur.

Parola, sertifika için kullanılan parolayla eşleşmelidir. PowerShell kullanırken değerini ile $env:USERPROFILEdeğiştirin%USERPROFILE%.

HTTPS üzerinden Docker ile ASP.NET Core Uygulamaları Geliştirme

Docker kapsayıcılarında HTTPS ile ASP.NET Core uygulamaları geliştirme hakkında bilgi ve örnekler için bkz . Docker üzerinden Docker ile ASP.NET Core Uygulamaları Geliştirme.

Ayrıca bkz.