HTTPS üzerinden docker ile görüntüleri barındırma ASP.NET Core
Gönderen Rick Anderson
ASP.NET Core varsayılan olarak HTTPSkullanır. Https , güven, kimlik ve şifreleme için sertifikalara bağımlıdır.
Bu belgede, .NET komut satırı arabirimi (CLI)kullanarak https ile önceden oluşturulmuş kapsayıcı görüntülerinin nasıl çalıştırılacağı açıklanmaktadır. Visual Studio ile geliştirme sırasında docker çalıştırmaya ilişkin yönergeler 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 bir sertifika yetkilisinden bir sertifika gereklidir. Let's Encrypt , ücretsiz sertifikalar sunan bir sertifika yetkilisindir.
Bu belge, üzerine önceden oluşturulmuş görüntüleri barındırmak için otomatik olarak imzalanan geliştirme sertifikaları kullanır localhost . Yönergeler, üretim sertifikalarını kullanmaya benzerdir. Tarafından oluşturulan sertifika dotnet dev-certs yalnızca ile kullanım içindir localhost ve Kubernetes gibi bir ortamda kullanılmamalıdır. Bir Kubernetes kümesi içinde HTTPS 'yi desteklemek için, bir kümede TLS sertifikalarını yönetme bölümünde , PODS içinde TLS kurulumu yapmak için sunulan araçları kullanın.
Geliştirme ve test için otomatik olarak imzalanan sertifikalar oluşturmak üzere DotNet dev-CERT kullanın.
Üretim sertifikaları için:
dotnet dev-certsAraç gerekli değildir.- Sertifikaların, yönergelerde kullanılan konumda depolanması gerekmez. Herhangi bir konumun çalışması gerekir, ancak bu sertifikalar site dizininizde depolanarak önerilmez.
Aşağıdaki bölümde yer alan yönergeler, Docker 'ın komut satırı seçeneğini kullanarak sertifikaları kapsayıcılara bağlama -v . COPY Dockerfile dosyasında bir komutla kapsayıcı görüntülerine sertifika ekleyebilirsiniz, ancak bunu yapmanız önerilmez. Sertifikaları bir görüntüye kopyalamak aşağıdaki nedenlerden dolayı önerilmez:
- Geliştirici sertifikaları ile test etmek için aynı görüntünün kullanımını zorlaştırır.
- Üretim sertifikaları ile barındırmak için aynı görüntünün kullanımını zorlaştırır.
- Sertifika açıklanmasının önemli bir riski vardır.
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ı kullanarak Windows
Sertifika Oluştur ve yerel makineyi Yapılandır:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p { password here }
dotnet dev-certs https --trust
Yukarıdaki komutlarda, öğesini parolayla değiştirin { password here } .
bir komut kabuğu 'nda HTTPS için yapılandırılan ASP.NET Core kapsayıcı görüntüsünü çalıştırın:
docker pull mcr.microsoft.com/dotnet/core/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="password" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:/https/ mcr.microsoft.com/dotnet/core/samples:aspnetapp
PowerShellkullanırken %USERPROFILE% ile değiştirin $env:USERPROFILE .
Parolanın, sertifika için kullanılan parolayla eşleşmesi gerekir.
Note: Bu durumda sertifika bir .pfx dosya olmalıdır. .crt .key Parola ile veya olmayan bir veya dosya kullanmadan, örnek kapsayıcıda desteklenmez. Örneğin, bir .crt dosya belirtirken kapsayıcı, ' sunucu modu SSL 'nin ilişkili özel anahtara sahip bir sertifika kullanması gerekir. ' gibi hata iletileri döndürebilir. WSLkullanırken, sertifikanın doğru şekilde yüklendiğinden emin olmak için bağlama yolunu doğrulayın.
macOS veya Linux
Sertifika Oluştur ve yerel makineyi Yapılandır:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p { password here }
dotnet dev-certs https --trust
dotnet dev-certs https --trustyalnızca macOS ve Windows desteklenir. Kuruluşunuz tarafından desteklenen şekilde Linux üzerinde CERT 'ye güvenmeniz gerekir. Büyük olasılıkla, tarayıcınızda sertifikaya güvenmeniz gerekir.
Yukarıdaki komutlarda, öğesini parolayla değiştirin { password here } .
kapsayıcı görüntüsünü HTTPS için yapılandırılan ASP.NET Core çalıştırın:
docker pull mcr.microsoft.com/dotnet/core/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="password" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v ${HOME}/.aspnet/https:/https/ mcr.microsoft.com/dotnet/core/samples:aspnetapp
Parolanın, sertifika için kullanılan parolayla eşleşmesi gerekir.
Windows kapsayıcıları kullanarak Windows
Sertifika Oluştur ve yerel makineyi Yapılandır:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p { password here }
dotnet dev-certs https --trust
Yukarıdaki komutlarda, öğesini parolayla değiştirin { password here } . PowerShellkullanırken %USERPROFILE% ile değiştirin $env:USERPROFILE .
kapsayıcı görüntüsünü HTTPS için yapılandırılan ASP.NET Core çalıştırın:
docker pull mcr.microsoft.com/dotnet/core/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="password" -e ASPNETCORE_Kestrel__Certificates__Default__Path=\https\aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:C:\https\ mcr.microsoft.com/dotnet/core/samples:aspnetapp
Parolanın, sertifika için kullanılan parolayla eşleşmesi gerekir. PowerShellkullanırken %USERPROFILE% ile değiştirin $env: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. https üzerinden docker ile ASP.NET Core uygulamaları geliştirme .