Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
ASP.NET Core ve výchozím nastavení používá HTTPS. HTTPS spoléhá na certifikáty pro důvěryhodnost, identitu a šifrování.
Tento dokument vysvětluje, jak spouštět předem sestavené bitové kopie kontejnerů s protokolem HTTPS pomocí rozhraní příkazového řádku .NET (CLI). Pokyny ke spuštění Dockeru ve vývoji pomocí sady Visual Studio najdete v tématu Vývoj aplikací ASP.NET Core pomocí Dockeru přes PROTOKOL HTTPS.
Tato ukázka vyžaduje Docker 17.06 nebo novějšího klienta Dockeru.
Předpoklady
Aktuální .NET SDK.
Certifikáty
Pro produkční hostování domény se vyžaduje certifikát od certifikační autority. Let's Encrypt je certifikační autorita, která nabízí bezplatné certifikáty.
Tento dokument používá vývojové certifikáty podepsané svým držitelem k hostování předem sestavených imagí přes localhost. Pokyny jsou podobné pokynům pro použití produkčních certifikátů. Certifikát vygenerovaný dotnet dev-certs je určen pouze pro použití s localhost a neměl by se používat v prostředí, jako je Kubernetes. Pokud chcete podporovat PROTOKOL HTTPS v rámci clusteru Kubernetes, použijte nástroje poskytované Správa certifikátů TLS v clusteru k nastavení protokolu TLS v podech.
dotnet dev-certs slouží k vytváření certifikátů podepsaných sebou samým pro vývoj a testování.
Pro produkční certifikáty:
- Nástroj
dotnet dev-certsnení vyžadován. - Certifikáty nemusí být uložené v umístění použitém v pokynech. Jakékoli umístění by mělo fungovat, i když ukládání certifikátů v adresáři webu se nedoporučuje.
Pokyny obsažené v následující části připojují certifikáty do kontejnerů pomocí možnosti příkazového řádku Dockeru -v. Certifikáty můžete přidat do imagí kontejnerů pomocí COPY příkazu v souboru Dockerfile, ale nedoporučuje se. Kopírování certifikátů do image se nedoporučuje z následujících důvodů:
- Pro testování pomocí certifikátů vývojářů je obtížné použít stejnou image.
- Pro hostování s produkčními certifikáty je obtížné použít stejnou image.
- Existuje značné riziko zveřejnění certifikátu.
Spouštění předdefinovaných bitových kopií kontejneru s protokolem HTTPS
Pro konfiguraci operačního systému použijte následující pokyny.
Windows pomocí kontejnerů Linux
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
V předchozích příkazech nahraďte <CREDENTIAL_PLACEHOLDER> heslem.
Spusťte image kontejneru s ASP.NET Core nakonfigurovanou pro HTTPS v příkazovém prostředí:
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
V předchozím kódu nahraďte <CREDENTIAL_PLACEHOLDER> heslem. Heslo musí odpovídat heslu použitému pro certifikát.
Pokud používáte PowerShell, nahraďte %USERPROFILE% za $env:USERPROFILE.
Certifikát v tomto případě musí být soubor .pfx. Použití souboru .crt nebo .key s heslem i bez hesla není u ukázkového kontejneru podporováno. Například při zadávání souboru .crt může kontejner vracet chybové zprávy, jako například „SSL v režimu serveru musí používat certifikát s přidruženým privátním klíčem.“ Při použití WSL ověřte cestu připojení, abyste měli jistotu, že se certifikát načte správně.
Note
Nezaměňujte konfigurační klíč HTTPS_PORTS a proměnnou prostředí ASPNETCORE_HTTPS_PORTS, které nastavují porty pro konfiguraci koncového bodu Kestrel/HTTP.sys, s konfiguračním klíčem HTTPS_PORT a proměnnou prostředí ASPNETCORE_HTTPS_PORT, které nastavují port pro middleware pro přesměrování na HTTPS.
macOS nebo Linux
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
V Linuxu dotnet dev-certs https --trust vyžaduje .NET 9 nebo novější sadu SDK. Pro informace o důvěryhodnosti certifikátu v Linuxu s .NET 8.0.401 nebo starší verzí SDK si prohlédněte dokumentaci k vaší distribuci Linuxu.
V předchozích příkazech nahraďte <CREDENTIAL_PLACEHOLDER> heslem.
Spusťte image kontejneru s nakonfigurovaným ASP.NET Core pro 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
V předchozím kódu nahraďte <CREDENTIAL_PLACEHOLDER> heslem. Heslo musí odpovídat heslu použitému pro certifikát.
Note
Nezaměňujte konfigurační klíč HTTPS_PORTS a proměnnou prostředí ASPNETCORE_HTTPS_PORTS, které nastavují porty pro konfiguraci koncového bodu Kestrel/HTTP.sys, s konfiguračním klíčem HTTPS_PORT a proměnnou prostředí ASPNETCORE_HTTPS_PORT, které nastavují port pro middleware pro přesměrování na HTTPS.
Windows využívající kontejnery Windows
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
V předchozích příkazech nahraďte <CREDENTIAL_PLACEHOLDER> heslem. Pokud používáte PowerShell, nahraďte %USERPROFILE% za $env:USERPROFILE.
Spusťte image kontejneru s nakonfigurovaným ASP.NET Core pro 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
POZNÁMKA:<CREDENTIAL_PLACEHOLDER> je zástupný symbol pro výchozí heslo certifikátů.
Heslo musí odpovídat heslu použitému pro certifikát. Pokud používáte PowerShell, nahraďte %USERPROFILE% za $env:USERPROFILE.
Vývoj aplikací ASP.NET Core pomocí Dockeru přes HTTPS
Informace a ukázky vývoje aplikací ASP.NET Core pomocí Dockeru přes HTTPS najdete v tématu Vývoj aplikací ASP.NET Core s Dockerem přes HTTPS.
Viz také
ASP.NET Core ve výchozím nastavení používá HTTPS. HTTPS spoléhá na certifikáty pro důvěryhodnost, identitu a šifrování.
Tento dokument vysvětluje, jak spouštět předpřipravené obrazy kontejnerů pomocí protokolu HTTPS pomocí rozhraní příkazového řádku .NET (CLI). Pokyny ke spuštění Dockeru ve vývoji pomocí sady Visual Studio najdete v tématu Vývoj aplikací ASP.NET Core pomocí Dockeru přes PROTOKOL HTTPS.
Tato ukázka vyžaduje klienta Docker ve verzi 17.06 nebo novější.
Předpoklady
Aktuální .NET SDK.
Certifikáty
Certifikát od certifikační autority je vyžadován pro produkční hostování domény. Let's Encrypt je certifikační autorita, která nabízí bezplatné certifikáty.
Tento dokument používá vývojové certifikáty podepsané sebou samými k hostování předdefinovaných imagí přes localhost. Pokyny jsou podobné pokynům pro použití produkčních certifikátů. Certifikát vygenerovaný dotnet dev-certs je určen pouze pro použití s localhost a neměl by se používat v prostředí, jako je Kubernetes. Pokud chcete podporovat protokol HTTPS v rámci clusteru Kubernetes, použijte nástroje poskytované v části Manage TLS Certificates in a Cluster k nastavení protokolu TLS v podech.
Pomocí dotnet dev-certs můžete vytvořit certifikáty podepsané sebou samými pro vývoj a testování.
Pro produkční certifikáty:
- Nástroj
dotnet dev-certsnení vyžadován. - Certifikáty nemusí být uložené v umístění použitém v pokynech. Jakékoli umístění by mělo fungovat, i když ukládání certifikátů v adresáři webu se nedoporučuje.
Pokyny obsažené v následující části popisují připojení certifikátů do kontejnerů pomocí možnosti příkazového řádku Dockeru -v. Certifikáty můžete přidat do imagí kontejnerů pomocí COPY příkazu v souboru Dockerfile, ale nedoporučuje se. Kopírování certifikátů do image se nedoporučuje z následujících důvodů:
- Pro testování pomocí certifikátů vývojářů je obtížné použít stejnou image.
- Pro hostování s produkčními certifikáty je obtížné použít stejnou image.
- Existuje značné riziko zveřejnění certifikátu.
Spouštění předem připravených imagí kontejneru pomocí HTTPS
Pro konfiguraci operačního systému použijte následující pokyny.
Windows používající linuxové kontejnery
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
V předchozích příkazech nahraďte <CREDENTIAL_PLACEHOLDER> heslem.
Spusťte image kontejneru s nakonfigurovaným ASP.NET Core pro HTTPS v příkazovém prostředí:
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
V předchozím kódu nahraďte <CREDENTIAL_PLACEHOLDER> heslem. Heslo musí odpovídat heslu použitému pro certifikát.
Pokud používáte PowerShell, nahraďte %USERPROFILE% za $env:USERPROFILE.
Poznámka: Certifikát v tomto případě musí být soubor .pfx. Použití souboru .crt nebo .key s heslem nebo bez hesla není u ukázkového kontejneru podporováno. Například při zadávání .crt souboru může kontejner vracet chybové zprávy, jako například „Režim SSL serveru musí používat certifikát s přidruženým soukromým klíčem.“ Při použití WSL ověřte cestu připojení, abyste měli jistotu, že se certifikát načte správně.
macOS nebo Linux
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
dotnet dev-certs https --trust je podporován pouze v systémech macOS a Windows. Certifikátům v Linuxu musíte důvěřovat způsobem, který vaše distribuce podporuje. Je pravděpodobné, že budete muset důvěřovat certifikátu ve svém prohlížeči.
V předchozích příkazech nahraďte <CREDENTIAL_PLACEHOLDER> heslem.
Spusťte image kontejneru s nakonfigurovaným ASP.NET Core pro 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
V předchozím kódu nahraďte <CREDENTIAL_PLACEHOLDER> heslem. Heslo musí odpovídat heslu použitému pro certifikát.
Windows využívající kontejnery Windows
Vygenerujte certifikát a nakonfigurujte místní počítač:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust
V předchozích příkazech nahraďte <CREDENTIAL_PLACEHOLDER> heslem. Pokud používáte PowerShell, nahraďte %USERPROFILE% za $env:USERPROFILE.
Spusťte image kontejneru s nakonfigurovaným ASP.NET Core pro 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
POZNÁMKA:<CREDENTIAL_PLACEHOLDER> je zástupný symbol výchozího hesla certifikátů Kestrel.
Heslo musí odpovídat heslu použitému pro certifikát. Pokud používáte PowerShell, nahraďte %USERPROFILE% za $env:USERPROFILE.
Vývoj aplikací ASP.NET Core pomocí Dockeru přes HTTPS
Viz Vývoj aplikací ASP.NET Core s Dockerem přes protokol HTTPS, kde najdete informace a ukázky, jak vyvíjet aplikace ASP.NET Core s protokolem HTTPS v kontejnerech Docker.