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. HTTPS spoléhá na certifikáty pro důvěryhodnost, identitu a š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.

Viz také