Hostování ASP.NET Core imagí pomocí Dockeru přes HTTPS
Autor: Rick Anderson
ASP.NET Core používá ve výchozím nastavení PROTOKOL HTTPS. HTTPS spoléhá na certifikáty pro vztah důvěryhodnosti, identitu a šifrování.
Tento dokument vysvětluje, jak spouštět předem sestavené image kontejnerů s https pomocí rozhraní příkazového řádku .NET (CLI). Pokyny ke spuštění Dockeru ve vývoji pomocí Visual Studio najdete v tématu Vývoj ASP.NET Core aplikací s Dockerem přes HTTPS.
Tato ukázka vyžaduje Docker 17.06 nebo novější klienta Dockeru.
Požadavky
Pro některé pokyny v tomto dokumentu se vyžaduje sada .NET Core 2.2 SDK nebo novější.
Certifikáty
Pro hostování domény v produkčním prostředí 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á certifikáty pro vývoj podepsaný svým držitelem pro hostování předdefinovaných imagí přes localhost . Pokyny jsou podobné jako při použití produkčních certifikátů. Certifikát vygenerovaný je jenom pro použití s a neměl by dotnet dev-certs localhost 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 článku Správa certifikátů TLS v clusteru k nastavení protokolu TLS v rámci podů.
Pomocí nástroje dotnet dev-certs můžete vytvářet certifikáty podepsané svým držitelem (self-signed certificates) pro účely vývoje a testování.
Pro produkční certifikáty:
- Nástroj
dotnet dev-certsnení 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ž se nedoporučuje ukládat certifikáty v adresáři lokality.
Pokyny obsažené v následující části smět připojovat certifikáty ke kontejnerům pomocí možnosti příkazového -v řádku Dockeru. Certifikáty můžete přidat do imagí kontejneru COPY pomocí příkazu v souboru Dockerfile, ale nedoporučuje se to. Kopírování certifikátů do image se nedoporučuje z následujících důvodů:
- Pro testování pomocí certifikátů pro vývojáře 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 zpřístupnění certifikátu.
Spouštění předem sestavených imagí kontejnerů s https
Při konfiguraci operačního systému postupujte podle následujících pokynů.
Windows s využitím kontejnerů Linuxu
Vygenerování certifikátu a konfigurace místního počítače:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p { password here }
dotnet dev-certs https --trust
V předchozích příkazech { password here } nahraďte heslem.
Spusťte image kontejneru s ASP.NET Core pro HTTPS v příkazovém prostředí:
docker pull mcr.microsoft.com/dotnet/core/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="password" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:/https/ mcr.microsoft.com/dotnet/core/samples:aspnetapp
Při použití PowerShellunahraďte %USERPROFILE% za $env:USERPROFILE .
Heslo se musí shodovat s heslem použitým pro certifikát.
Poznámka: Certifikát v tomto případě musí být .pfx soubor. Ukázkový kontejner nepodporuje použití souboru nebo s heslem nebo bez .crt .key něj. Například při zadávání souboru může kontejner vracet chybové zprávy, například "Ssl v režimu serveru musí používat certifikát s přidruženým .crt privátním klíčem". Při použití WSLověřte cestu připojení a ujistěte se, že se certifikát správně načte.
macOS nebo Linux
Vygenerování certifikátu a konfigurace místního počítače:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p { password here }
dotnet dev-certs https --trust
dotnet dev-certs https --trustse podporuje jenom v macOS a Windows. Certifikáty v Linuxu musíte důvěřovat způsobem, který podporuje vaše distribuce. Je pravděpodobné, že budete muset důvěřovat certifikátu v prohlížeči.
V předchozích příkazech { password here } nahraďte heslem.
Spusťte image kontejneru s nakonfigurovanou ASP.NET Core https:
docker pull mcr.microsoft.com/dotnet/core/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="password" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v ${HOME}/.aspnet/https:/https/ mcr.microsoft.com/dotnet/core/samples:aspnetapp
Heslo se musí shodovat s heslem použitým pro certifikát.
Windows s využitím Windows kontejnerů
Vygenerování certifikátu a konfigurace místního počítače:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p { password here }
dotnet dev-certs https --trust
V předchozích příkazech { password here } nahraďte heslem. Při použití PowerShellunahraďte %USERPROFILE% za $env:USERPROFILE .
Spusťte image kontejneru s nakonfigurovanou ASP.NET Core https:
docker pull mcr.microsoft.com/dotnet/core/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORT=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="password" -e ASPNETCORE_Kestrel__Certificates__Default__Path=\https\aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:C:\https\ mcr.microsoft.com/dotnet/core/samples:aspnetapp
Heslo se musí shodovat s heslem použitým pro certifikát. Při použití PowerShellunahraďte %USERPROFILE% za $env:USERPROFILE .
Vývoj ASP.NET Core aplikací pomocí Dockeru přes HTTPS
Informace a ukázky ASP.NET Core o vývoji aplikací s https v kontejnerech Dockeru najdete v tématu Vývoj ASP.NET Core aplikací pomocí Dockeru přes HTTPS.