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:

  1. 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.

  2. 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.

  3. 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.