SSL gebruiken voor in een container geplaatste ASP.NET Core-apps
SSL (Secure Sockets Layer) biedt beveiligde verbindingen via HTTP (HTTPS). Deze methode voor het beveiligen van verbindingen maakt gebruik van een certificaat en in een container-app verschillen de poorttoewijzingen voor beveiligde en onbeveiligde toegangspunten.
App-architecturen met meerdere containers variƫren, afhankelijk van de beveiligingsvereisten. Sommige app-ontwerpen maken gebruik van HTTPS voor externe eindpunten, maar HTTP voor interne communicatie van de ene container naar de andere. Omgevingen met hoge beveiliging kunnen HTTPS gebruiken voor alle communicatie, zelfs tussen containers die alleen toegankelijk zijn binnen een beveiligde buitenperimeter.
Poorten en poorttoewijzingen
Het Dockerfile bevat instructies voor het blootstellen van poorten aan extern verkeer via onbeveiligde HTTP of beveiligde HTTPS. Bovendien voert .NET 8 en hoger de container-app uit als een gewone gebruiker, maar in eerdere .NET-versies worden container-apps uitgevoerd als beheerder. Wanneer apps als beheerder worden uitgevoerd, hebben apps toegang tot de bevoegde poorten 80 voor HTTP-verkeer en 443 HTTPS-verkeer. Wanneer apps worden uitgevoerd als gebruikers zonder verhoogde bevoegdheden, gebruiken ze poorten 8080 voor HTTP en 8081 voor HTTPS. De poorten worden weergegeven in de EXPOSE-opdrachten in het Dockerfile dat Visual Studio genereert. De poorten in de container die in het Dockerfile zijn opgegeven, worden toegewezen aan hostpoorten met behulp van de toewijzingen die zijn opgegeven in het opstartinstellingenbestand. Zie Instellingen voor het starten van containerhulpprogramma's. Wanneer de container draait, kunt u de poorttoewijzingen bekijken in het venster Containers. Zie Containersweergeven en diagnosticeren.
Certificaten
Containerhulpprogramma's in Visual Studio bieden ondersteuning voor foutopsporing van een met SSL ingeschakelde ASP.NET kern-app met een dev-certificaat, op dezelfde manier als u zou verwachten dat deze zonder containers werkt. Om dit mogelijk te maken, voegt Visual Studio een aantal extra stappen toe om het certificaat te exporteren en beschikbaar te maken voor de container. Hier volgt de stroom die Visual Studio voor u verwerkt bij het opsporen van fouten in de container:
Zorgt ervoor dat het lokale ontwikkelingscertificaat aanwezig en vertrouwd is op de hostcomputer via het hulpprogramma
dev-certs
.Hiermee exporteert u het certificaat naar
%APPDATA%\ASP.NET\Https
met een beveiligd wachtwoord dat is opgeslagen in het archief met gebruikersgeheimen voor deze specifieke app.Volumes worden aangekoppeld van de volgende directories:
*%APPDATA%\Microsoft\UserSecrets
*%APPDATA%\ASP.NET\Https
ASP.NET Core zoekt naar een certificaat dat overeenkomt met de assemblynaam in de map Https. Daarom wordt het aan de container in dat pad toegewezen. Het certificaatpad en wachtwoord kunnen ook worden gedefinieerd met behulp van omgevingsvariabelen (dat wil gezegd, ASPNETCORE_Kestrel__Certificates__Default__Path
en ASPNETCORE_Kestrel__Certificates__Default__Password
) of in het JSON-bestand met gebruikersgeheimen, bijvoorbeeld:
{
"Kestrel": {
"Certificates": {
"Default": {
"Path": "c:\\app\\mycert.pfx",
"Password": "strongpassword"
}
}
}
}
Als uw configuratie zowel container- als niet-container-builds ondersteunt, moet u de omgevingsvariabelen gebruiken, omdat de paden specifiek zijn voor de containeromgeving.
Zie Hosting van ASP.NET Core-installatiekopieƫn met Docker via HTTPSvoor meer informatie over het gebruik van SSL met ASP.NET Core-apps in containers.
Zie CertExamplevoor een codevoorbeeld dat laat zien hoe je aangepaste certificaten maakt voor een multi-service app. Deze certificaten worden vertrouwd op de host en in de containers voor service-tot-servicecommunicatie via HTTPS.
Als u van plan bent om uw container-app in Azure te implementeren, raadpleegt u HTTPS configureren bij het implementeren van toepassingen in containers in Azure.