Použití PROTOKOLU SSL pro kontejnerizované aplikace ASP.NET Core
PROTOKOL SSL (Secure Sockets Layer) poskytuje zabezpečená připojení přes protokol HTTP (HTTPS). Tato metoda zabezpečení připojení používá certifikát a v kontejnerizované aplikaci se mapování portů liší pro zabezpečené a nezabezpečené vstupní body.
Architektury vícekontejnerových aplikací se liší v závislosti na požadavcích na zabezpečení. Některé návrhy aplikací používají https pro externí koncové body, ale HTTP pro interní komunikaci z jednoho kontejneru do druhého. Prostředí s vysokým zabezpečením můžou používat protokol HTTPS pro veškerou komunikaci, a to i mezi kontejnery, které jsou přístupné pouze v rámci zabezpečené vnější hranice.
Mapování portů a portů
Soubor Dockerfile obsahuje direktivy pro zveřejnění portů pro externí provoz přes nezabezpečený protokol HTTP nebo zabezpečený protokol HTTPS. Rozhraní .NET 8 a novější také spouští kontejnerizovanou aplikaci jako typický uživatel, ale ve starších verzích .NET kontejnerizované aplikace běží jako správce. Při spuštění jako správce mají aplikace přístup k privilegovaným portům 80 pro provoz HTTP a provoz HTTPS 443. Když aplikace běží jako uživatelé bez zvýšených oprávnění, používají porty 8080 pro HTTP a 8081 pro HTTPS. Porty se zobrazí v příkazech EXPOSE v souboru Dockerfile, který sada Visual Studio generuje. Porty v kontejneru zadaném v souboru Dockerfile se mapují na hostitelské porty pomocí mapování zadaných v souboru nastavení spuštění. Viz Nastavení spuštění nástrojů kontejneru. Po spuštění kontejneru můžete zobrazit mapování portů v okně Kontejnery . Viz Zobrazení a diagnostika kontejnerů.
Certifikáty
Nástroje pro kontejnery v sadě Visual Studio podporují ladění základní aplikace s povoleným protokolem SSL ASP.NET certifikátem pro vývoj, stejně jako byste očekávali, že bude fungovat bez kontejnerů. Aby k tomu došlo, Visual Studio přidá několik dalších kroků k exportu certifikátu a zpřístupnění kontejneru. Tady je tok, který sada Visual Studio zpracovává za vás při ladění v kontejneru:
Zajišťuje, že je místní vývojový certifikát přítomný a důvěryhodný na hostitelském počítači prostřednictvím
dev-certs
tohoto nástroje.Exportuje certifikát do
%APPDATA%\ASP.NET\Https
zabezpečeného hesla uloženého v úložišti tajných kódů uživatele pro tuto konkrétní aplikaci.Svazky připojí následující adresáře:
*%APPDATA%\Microsoft\UserSecrets
*%APPDATA%\ASP.NET\Https
ASP.NET Core hledá certifikát, který odpovídá názvu sestavení ve složce Https , a proto je namapovaný na kontejner v této cestě. Cestu k certifikátu a heslo je možné také definovat pomocí proměnných prostředí (to znamená ASPNETCORE_Kestrel__Certificates__Default__Path
a ASPNETCORE_Kestrel__Certificates__Default__Password
) nebo v souboru JSON tajných kódů uživatele, například:
{
"Kestrel": {
"Certificates": {
"Default": {
"Path": "c:\\app\\mycert.pfx",
"Password": "strongpassword"
}
}
}
}
Pokud vaše konfigurace podporuje kontejnerizované i nekonte kontejnerizované sestavení, měli byste použít proměnné prostředí, protože cesty jsou specifické pro prostředí kontejneru.
Další informace o používání SSL s aplikacemi ASP.NET Core v kontejnerech najdete v tématu Hostování imagí ASP.NET Core pomocí Dockeru přes HTTPS.
Ukázka kódu, která demonstruje vytvoření vlastních certifikátů pro aplikaci s více službami, která je na hostiteli a v kontejnerech pro komunikaci mezi službami HTTPS, najdete v tématu CertExample.