Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
ASP.NET Core domyślnie używa protokołu HTTPS. HTTPS opiera się na certyfikatach na potrzeby zaufania, tożsamości i szyfrowania.
W tym dokumencie wyjaśniono, jak uruchamiać gotowe obrazy kontenerów przy użyciu protokołu HTTPS za pomocą interfejsu wiersza polecenia (CLI) platformy .NET. Aby uzyskać instrukcje dotyczące uruchamiania platformy Docker w środowisku programistycznym za pomocą programu Visual Studio, zobacz Tworzenie aplikacji ASP.NET Core za pomocą platformy Docker za pośrednictwem protokołu HTTPS.
Ten przykład wymaga klienta Docker w wersji 17.06 lub nowszej.
Wymagania wstępne
Bieżący pakiet SDK platformy .NET.
Certyfikaty
Certyfikat z urzędu certyfikacji jest wymagany do hostingu produkcyjnego dla domeny. Let's Encrypt jest urzędem certyfikacji, który oferuje bezpłatne certyfikaty.
W tym dokumencie używane są certyfikaty programistyczne z podpisem własnym do hostowania wstępnie utworzonych obrazów za pośrednictwem programu localhost. Instrukcje są podobne do instrukcji dotyczących użycia certyfikatów produkcyjnych. Certyfikat wygenerowany przez program dotnet dev-certs jest przeznaczony do użytku wyłącznie z usługą localhost i nie powinien być używany w środowisku, na przykład Kubernetes. Aby obsługiwać protokół HTTPS w klastrze Kubernetes, skorzystaj ze wskazówek zawartych w dokumencie Zarządzanie certyfikatami TLS w klastrze, aby skonfigurować TLS w zasobnikach.
Użyj dotnet dev-certs polecenia, aby utworzyć certyfikaty z podpisem własnym na potrzeby tworzenia i testowania.
Dla certyfikatów produkcyjnych:
- Narzędzie
dotnet dev-certsnie jest wymagane. - Certyfikaty nie muszą być przechowywane w lokalizacji używanej w instrukcjach. Każda lokalizacja powinna działać, chociaż przechowywanie certyfikatów w katalogu witryny nie jest zalecane.
Instrukcje zawarte w poniższej sekcji opisują montowanie certyfikatów do kontenerów przy użyciu opcji wiersza polecenia platformy Docker -v. Certyfikaty można dodać do obrazów kontenerów za pomocą COPY polecenia w pliku Dockerfile, ale nie jest to zalecane. Kopiowanie certyfikatów do obrazu nie jest zalecane z następujących powodów:
- Do testowania przy użyciu certyfikatów deweloperów trudno jest użyć tego samego obrazu.
- Trudno jest użyć tego samego obrazu do hostowania z certyfikatami produkcyjnymi.
- Istnieje znaczne ryzyko ujawnienia certyfikatu.
Uruchamianie wstępnie utworzonych obrazów kontenerów przy użyciu protokołu HTTPS
Skorzystaj z poniższych instrukcji dotyczących konfiguracji systemu operacyjnego.
Windows korzystający z kontenerów Linux
Wygeneruj certyfikat i skonfiguruj komputer lokalny:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
W poprzednich poleceniach zastąp <CREDENTIAL_PLACEHOLDER> hasłem.
Uruchom obraz kontenera przy użyciu ASP.NET Core skonfigurowanego dla protokołu HTTPS w powłoce poleceń:
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=443 -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
W poprzednim kodzie zastąp <CREDENTIAL_PLACEHOLDER> hasłem. Hasło musi być zgodne z hasłem używanym dla certyfikatu.
W przypadku korzystania z programu PowerShell zastąp %USERPROFILE% elementem $env:USERPROFILE.
Certyfikat w tym przypadku musi być plikiem .pfx file. Użycie pliku .crt lub .key, z hasłem lub bez niego, nie jest obsługiwane w przykładowym kontenerze. Na przykład podczas określania pliku .crt kontener może zwracać komunikaty o błędach, takie jak „SSL w trybie serwera wymaga certyfikatu ze skojarzonym kluczem prywatnym”. W przypadku korzystania z programu WSL zweryfikuj ścieżkę montowania, aby upewnić się, że certyfikat jest ładowany poprawnie.
Note
Nie należy mylić klucza konfiguracji HTTPS_PORTS i zmiennej środowiskowej ASPNETCORE_HTTPS_PORTS, które ustawiają porty dla konfiguracji punktów końcowych Kestrel/HTTP.sys, z kluczem konfiguracji HTTPS_PORT i zmienną środowiskową ASPNETCORE_HTTPS_PORT, które ustawiają port dla middleware przekierowania HTTPS.
macOS lub Linux
Wygeneruj certyfikat i skonfiguruj komputer lokalny:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
W systemie Linux dotnet dev-certs https --trust wymagany jest zestaw SDK platformy .NET 9 lub nowszej. W przypadku systemu Linux na platformie .NET 8.0.401 lub starszej wersji zestawu SDK zobacz dokumentację dystrybucji systemu Linux, aby ufać certyfikatowi.
W poprzednich poleceniach zastąp <CREDENTIAL_PLACEHOLDER> hasłem.
Uruchom obraz kontenera przy użyciu ASP.NET Core skonfigurowanego dla protokołu HTTPS:
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=443 -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
W powyższym kodzie zastąp <CREDENTIAL_PLACEHOLDER> hasłem. Hasło musi być zgodne z hasłem używanym dla certyfikatu.
Note
Nie należy mylić klucza konfiguracji HTTPS_PORTS i zmiennej środowiskowej ASPNETCORE_HTTPS_PORTS, które ustawiają porty dla konfiguracji punktów końcowych Kestrel/HTTP.sys, z kluczem konfiguracji HTTPS_PORT i zmienną środowiskową ASPNETCORE_HTTPS_PORT, które ustawiają port dla middleware przekierowania HTTPS.
System Windows korzystający z kontenerów Windows
Wygeneruj certyfikat i skonfiguruj komputer lokalny:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
W poprzednich poleceniach zastąp <CREDENTIAL_PLACEHOLDER> hasłem. W przypadku korzystania z programu PowerShell zastąp %USERPROFILE% elementem $env:USERPROFILE.
Uruchom obraz kontenera z ASP.NET Core skonfigurowanym do obsługi protokołu HTTPS:
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=443 -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
UWAGA:<CREDENTIAL_PLACEHOLDER> oznacza domyślne hasło certyfikatów Kestrel.
Hasło musi być takie samo jak hasło używane dla certyfikatu. W przypadku korzystania z programu PowerShell zastąp %USERPROFILE% elementem $env:USERPROFILE.
Tworzenie aplikacji ASP.NET Core za pomocą platformy Docker za pośrednictwem protokołu HTTPS
Informacje i przykłady dotyczące tworzenia aplikacji ASP.NET Core z użyciem protokołu HTTPS w kontenerach platformy Docker można znaleźć w artykule Tworzenie aplikacji ASP.NET Core z platformą Docker przez HTTPS.
Zobacz też
ASP.NET Core domyślnie używa HTTPS. HTTPS opiera się na certyfikatach na potrzeby zaufania, tożsamości i szyfrowania.
W tym dokumencie wyjaśniono, jak uruchamiać wstępnie utworzone obrazy kontenerów przy użyciu protokołu HTTPS przy użyciu interfejsu wiersza polecenia platformy .NET (CLI). Aby uzyskać instrukcje dotyczące uruchamiania Dockera w środowisku deweloperskim w programie Visual Studio, zobacz Tworzenie aplikacji ASP.NET Core za pomocą Dockera za pośrednictwem protokołu HTTPS.
Ten przykład wymaga klienta Docker w wersji Docker 17.06 lub nowszej.
Wymagania wstępne
Aktualny pakiet SDK platformy .NET.
Certyfikaty
Certyfikat z urzędu certyfikacji jest wymagany do hostowania produkcyjnego dla domeny. Let's Encrypt jest urzędem certyfikacji, który oferuje bezpłatne certyfikaty.
W tym dokumencie używane są certyfikaty deweloperskie z podpisem własnym do hostowania wstępnie zbudowanych obrazów za pośrednictwem localhost. Instrukcje są podobne do tych dotyczących używania certyfikatów produkcyjnych. Certyfikat wygenerowany przez dotnet dev-certs jest przeznaczony do użytku wyłącznie z localhost i nie powinien być używany w środowisku takim jak Kubernetes. Aby obsługiwać protokół HTTPS w klastrze Kubernetes, użyj narzędzi udostępnianych przez Manage TLS Certificates in a Cluster, aby skonfigurować protokół TLS w zasobnikach.
Użyj polecenia dotnet dev-certs, aby utworzyć certyfikaty z podpisem własnym do celów programistycznych i testowania.
W przypadku certyfikatów produkcyjnych:
- Narzędzie
dotnet dev-certsnie jest wymagane. - Certyfikaty nie muszą być przechowywane w lokalizacji używanej w instrukcjach. Każda lokalizacja powinna działać, chociaż przechowywanie certyfikatów w katalogu witryny nie jest zalecane.
Instrukcje zawarte w poniższej sekcji opisują instalowanie certyfikatów w kontenerach przy użyciu opcji wiersza polecenia platformy Docker -v. Certyfikaty można dodać do obrazów kontenerów za pomocą COPY polecenia w pliku Dockerfile, ale nie jest to zalecane. Kopiowanie certyfikatów do obrazu nie jest zalecane z następujących powodów:
- Do testowania przy użyciu certyfikatów deweloperów trudno jest użyć tego samego obrazu.
- Trudno jest użyć tego samego obrazu do hostowania z certyfikatami produkcyjnymi.
- Istnieje znaczne ryzyko ujawnienia certyfikatu.
Uruchamianie wstępnie utworzonych obrazów kontenerów przy użyciu protokołu HTTPS
Skorzystaj z poniższych instrukcji dotyczących konfiguracji systemu operacyjnego.
Windows używający kontenerów systemu Linux
Wygeneruj certyfikat i skonfiguruj komputer lokalny:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
W poprzednich poleceniach zastąp <CREDENTIAL_PLACEHOLDER> hasłem.
Uruchom obraz kontenera przy użyciu ASP.NET Core skonfigurowanego dla protokołu HTTPS w powłoce poleceń:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+:443;http://+" -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
W powyższym kodzie zastąp <CREDENTIAL_PLACEHOLDER> hasłem. Hasło musi być zgodne z hasłem używanym dla certyfikatu.
W przypadku korzystania z programu PowerShell zastąp %USERPROFILE% elementem $env:USERPROFILE.
Uwaga: certyfikat w tym przypadku musi być plikiem .pfx . Użycie pliku .crt lub .key, z hasłem lub bez hasła, nie jest obsługiwane w przykładowym kontenerze. Na przykład podczas określania pliku .crt kontener może zwracać komunikaty o błędach, takie jak „Tryb serwera SSL musi używać certyfikatu ze skojarzonym kluczem prywatnym”. W przypadku korzystania z programu WSL zweryfikuj ścieżkę montowania, aby upewnić się, że certyfikat jest ładowany poprawnie.
macOS lub Linux
Wygeneruj certyfikat i skonfiguruj komputer lokalny:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
dotnet dev-certs https --trust jest obsługiwany tylko w systemach macOS i Windows. Należy ufać certyfikatom w systemie Linux w sposób obsługiwany przez dystrybucję. Prawdopodobnie musisz ufać certyfikatowi w przeglądarce.
W poprzednich poleceniach zastąp <CREDENTIAL_PLACEHOLDER> hasłem.
Uruchom obraz kontenera przy użyciu ASP.NET Core skonfigurowanego dla protokołu HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+:443;http://+" -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
W powyższym fragmencie kodu zastąp <CREDENTIAL_PLACEHOLDER> hasłem. Hasło musi być zgodne z hasłem używanym dla certyfikatu.
System Windows z użyciem kontenerów systemu Windows
Wygeneruj certyfikat i skonfiguruj komputer lokalny:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
W poprzednich poleceniach zastąp <CREDENTIAL_PLACEHOLDER> hasłem. W przypadku korzystania z programu PowerShell zastąp %USERPROFILE% elementem $env:USERPROFILE.
Uruchom obraz kontenera przy użyciu ASP.NET Core skonfigurowanego dla protokołu HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+:443;http://+" -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
UWAGA:<CREDENTIAL_PLACEHOLDER> jest symbolem zastępczym domyślnego Kestrel hasła certyfikatów.
Hasło musi być zgodne z hasłem używanym dla certyfikatu. W przypadku korzystania z programu PowerShell zastąp %USERPROFILE% elementem $env:USERPROFILE.
Tworzenie aplikacji ASP.NET Core za pomocą platformy Docker za pośrednictwem protokołu HTTPS
Aby uzyskać informacje i przykłady dotyczące tworzenia aplikacji ASP.NET Core z użyciem protokołu HTTPS w kontenerach Docker, zobacz artykuł Tworzenie aplikacji ASP.NET Core przy użyciu protokołu HTTPS w kontenerach platformy Docker.