Hostování imagí ASP.NET Core pomocí Dockeru přes HTTPS
Autor: Rick Anderson
ASP.NET Core ve výchozím nastavení používá protokol HTTPS. PROTOKOL HTTPS spoléhá na certifikáty pro vztah důvěryhodnosti identitya šifrování.
Tento dokument vysvětluje, jak spouštět předdefinované image 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 Docker 17.06 nebo novější klienta Dockeru.
Požadavky
Aktuální sada .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ředdefinovaných imagí.localhost
Pokyny jsou podobné použití produkčních certifikátů. Certifikát vygenerovaný dotnet dev-certs
pouze pro použití 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ávou certifikátů TLS v clusteru k nastavení protokolu TLS v podech.
Slouží dotnet dev-certs
k vytvoření certifikátů podepsaných svým držitelem pro vývoj a testování.
Pro produkční certifikáty:
- Nástroj
dotnet dev-certs
není povinný. - 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 ke kontejnerům 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 imagí kontejneru pomocí PROTOKOLU HTTPS
Pro konfiguraci operačního systému použijte následující pokyny.
Windows s využitím linuxových kontejnerů
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=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
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%
ho .$env:USERPROFILE
Poznámka: Certifikát v tomto případě musí být .pfx
soubor. .crt
Použití nebo .key
souboru s heslem není u ukázkového kontejneru podporované nebo bez. Například při zadávání .crt
souboru může kontejner vracet chybové zprávy, jako je 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ě.
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 sadu .NET 9 SDK nebo novější. Informace o Linuxu v sadě .NET 8.0.401 SDK a starších verzích najdete v dokumentaci k distribuci Linuxu pro důvěryhodnost certifikátu.
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=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
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%
ho .$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=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
POZNÁMKA: <CREDENTIAL_PLACEHOLDER>
je zástupný symbol pro Kestrel výchozí heslo certifikátů.
Heslo musí odpovídat heslu použitému pro certifikát. Pokud používáte PowerShell, nahraďte %USERPROFILE%
ho .$env:USERPROFILE
Vývoj ASP.NET základních aplikací 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 pomocí protokolu HTTPS v kontejnerech Dockeru.
Viz také
ASP.NET Core ve výchozím nastavení používá protokol HTTPS. PROTOKOL HTTPS spoléhá na certifikáty pro vztah důvěryhodnosti identitya šifrování.
Tento dokument vysvětluje, jak spouštět předdefinované image 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 Docker 17.06 nebo novější klienta Dockeru.
Požadavky
Aktuální sada .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ředdefinovaných imagí.localhost
Pokyny jsou podobné použití produkčních certifikátů. Certifikát vygenerovaný dotnet dev-certs
pouze pro použití 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ávou certifikátů TLS v clusteru k nastavení protokolu TLS v podech.
Slouží dotnet dev-certs
k vytvoření certifikátů podepsaných svým držitelem pro vývoj a testování.
Pro produkční certifikáty:
- Nástroj
dotnet dev-certs
není povinný. - 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 ke kontejnerům 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 imagí kontejneru pomocí PROTOKOLU HTTPS
Pro konfiguraci operačního systému použijte následující pokyny.
Windows s využitím linuxových kontejnerů
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=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
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%
ho .$env:USERPROFILE
Poznámka: Certifikát v tomto případě musí být .pfx
soubor. .crt
Použití nebo .key
souboru s heslem není u ukázkového kontejneru podporované nebo bez. Například při zadávání .crt
souboru může kontejner vracet chybové zprávy, jako je 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ě.
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áty 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 v 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://+;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
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%
ho .$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=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
POZNÁMKA: <CREDENTIAL_PLACEHOLDER>
je zástupný symbol pro Kestrel výchozí heslo certifikátů.
Heslo musí odpovídat heslu použitému pro certifikát. Pokud používáte PowerShell, nahraďte %USERPROFILE%
ho .$env:USERPROFILE
Vývoj ASP.NET základních aplikací 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 pomocí protokolu HTTPS v kontejnerech Dockeru.