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, identityve ş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.
Önkoş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:USERPROFILE
değ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
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>
.
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:USERPROFILE
değ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:USERPROFILE
değ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.
ASP.NET Core varsayılan olarak HTTPS kullanır. HTTPS güven, identityve ş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.
Önkoş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:USERPROFILE
değ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:USERPROFILE
değ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:USERPROFILE
değ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.
ASP.NET Core