Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SSL (Secure Sockets Layer) proporciona conexiones seguras sobre HTTP (HTTPS). Este método de protección de conexiones usa un certificado y, en una aplicación en contenedores, las asignaciones de puertos son diferentes para los puntos de entrada protegidos y no seguros.
Prerrequisitos
- Docker Desktop o Podman Desktop.
- Visual Studio o para la compatibilidad con Podman, Visual Studio 2026, con la carga de trabajo desarrollo web y ASP.NET, la carga de trabajo desarrollo de Azure, y/o la carga de trabajo desarrollo de escritorio de .NET instalada.
Prerrequisitos
- Docker Desktop.
- Visual Studio con las cargas de trabajo desarrollo de ASP.NET y web, desarrollo de Azure y/o desarrollo de escritorio de .NET instaladas.
Seguridad para aplicaciones multicontenedor
Las arquitecturas de aplicaciones de varios contenedores varían en función de los requisitos de seguridad. Algunos diseños de aplicaciones usan HTTPS para puntos de conexión externos, pero HTTP para la comunicación interna de un contenedor a otro. Los entornos de alta seguridad pueden usar HTTPS para todas las comunicaciones, incluso entre contenedores a los que solo se puede acceder dentro de un perímetro externo seguro.
Puertos y mapeos de puertos
Dockerfile contiene directivas para exponer puertos al tráfico externo a través de HTTP no seguro o HTTPS seguro. Además, .NET 8 y versiones posteriores ejecutan la aplicación en contenedor como usuario típico, pero en versiones anteriores de .NET, las aplicaciones en contenedor se ejecutan como administrador. Cuando se ejecuta como administrador, las aplicaciones tienen acceso a los puertos con privilegios 80 para el tráfico HTTP y el tráfico HTTPS 443. Cuando las aplicaciones se ejecutan como usuarios sin privilegios elevados, usan los puertos 8080 para HTTP y 8081 para HTTPS. Los puertos aparecen en los comandos EXPOSE del Dockerfile que genera Visual Studio. Los puertos del contenedor especificado en el Dockerfile se asignan a los puertos host mediante las asignaciones especificadas en el archivo de configuración de inicio. Consulte Configuración de inicio de las herramientas de contenedor. Cuando el contenedor está en ejecución, puede ver las asignaciones de puertos en la ventana Contenedores. Consulte Visualización y diagnóstico de contenedores.
Certificados
Las herramientas de contenedor de Visual Studio admiten la depuración de una aplicación ASP.NET Core habilitada para SSL con un certificado de desarrollo, de la misma manera que cabría esperar que funcionase sin contenedores. Para que esto suceda, Visual Studio agrega un par de pasos más para exportar el certificado y ponerlo a disposición del contenedor. Este es el flujo que Visual Studio controla automáticamente durante la depuración en el contenedor:
Garantiza que el certificado de desarrollo local esté presente y sea de confianza en la máquina host a través de la herramienta
dev-certs.Exporta el certificado a
%APPDATA%\ASP.NET\Httpscon una contraseña segura almacenada en el almacén de secretos de usuario para esta aplicación determinada.Monta el volumen en los directorios siguientes:
*%APPDATA%\Microsoft\UserSecrets*%APPDATA%\ASP.NET\Https
ASP.NET Core busca un certificado que coincida con el nombre de ensamblado de la carpeta Https, que es el motivo por el que se asigna al contenedor en esa ruta de acceso. La ruta de acceso del certificado y la contraseña se pueden definir de forma alternativa mediante variables de entorno (es decir, ASPNETCORE_Kestrel__Certificates__Default__Path y ASPNETCORE_Kestrel__Certificates__Default__Password) o en el archivo json de secretos de usuario, por ejemplo:
{
"Kestrel": {
"Certificates": {
"Default": {
"Path": "c:\\app\\mycert.pfx",
"Password": "strongpassword"
}
}
}
}
Si tu configuración admite tanto compilaciones contenedorizadas como no contenedorizadas, debes usar las variables de entorno, debido a que las rutas son específicas del entorno del contenedor.
Para obtener más información sobre el uso de SSL con aplicaciones de ASP.NET Core en contenedores, consulte Hospedaje de imágenes ASP.NET Core con Docker a través de HTTPS.
Para ver un ejemplo de código que muestra cómo crear certificados personalizados para una aplicación de varios servicios que son de confianza en el host y en los contenedores para la comunicación entre servicios HTTPS, consulte CertExample.
Si planea implementar la aplicación en contenedor en Azure, consulte Configuración de HTTPS al implementar aplicaciones en contenedor en Azure.