Hospedaje de imágenes de ASP.NET Core con Docker Compose a través de HTTPS
ASP.NET Core usa HTTPS de forma predeterminada. HTTPS se basa en certificados para la confianza, identity y el cifrado.
En este documento se explica cómo ejecutar imágenes de contenedor pregeneradas con HTTPS.
Consulte Desarrollo de aplicaciones de ASP.NET Core con Docker a través de HTTPS para escenarios de desarrollo.
En este ejemplo se necesita la versión Docker 17.06 o posterior del cliente Docker.
Prerrequisitos
El SDK de .NET Core 2.2 o posterior es necesario para algunas de las instrucciones de este documento.
Certificados
Se requiere un certificado de una entidad de certificación para el hospedaje de producción para un dominio. Let's Encrypt es una entidad de certificación que ofrece certificados gratuitos.
Este documento utiliza certificados de desarrollo autofirmados para alojar imágenes preconstruidas en localhost
. Las instrucciones son similares al uso de certificados de producción.
Para los certificados de producción:
- La herramienta
dotnet dev-certs
no es necesaria. - Los certificados no necesitan almacenarse en la ubicación que se usa en las instrucciones. Almacene los certificados en cualquier ubicación fuera del directorio del sitio.
Las instrucciones contenidas en la sección siguiente montan certificados en contenedores mediante la volumes
propiedad en docker-compose.yml. Puede agregar certificados a imágenes de contenedor con un COPY
comando en un Dockerfile, pero no se recomienda. No se recomienda copiar certificados en una imagen por los siguientes motivos:
- Dificulta el uso de la misma imagen para realizar pruebas con certificados de desarrollador.
- Dificulta el uso de la misma imagen para hospedar con certificados de producción.
- Existe un riesgo significativo de divulgación de certificados.
Iniciar un contenedor con soporte https utilizando docker compose
Siga las instrucciones siguientes para la configuración del sistema operativo.
Windows mediante contenedores de Linux
Genere el certificado y configure la máquina local:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
El comando anterior mediante la CLI de .NET:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
En los comandos anteriores, reemplace por $CREDENTIAL_PLACEHOLDER$
una contraseña.
Cree un archivo docker-compose.debug.yml con el siguiente contenido:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
La contraseña especificada en el archivo docker compose debe coincidir con la contraseña usada para el certificado.
Inicie el contenedor con ASP.NET Core configurado para HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
macOS o Linux
Genere el certificado y configure la máquina local:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
En Linux, dotnet dev-certs https --trust
requiere el SDK de .NET 9 o una versión posterior. Para Linux en el SDK de .NET 8.0.401 y versiones anteriores, consulta la documentación de tu distribución de Linux para confiar en un certificado.
En los comandos anteriores, reemplace por $CREDENTIAL_PLACEHOLDER$
una contraseña.
Cree un archivo docker-compose.debug.yml con el siguiente contenido:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
La contraseña especificada en el archivo docker compose debe coincidir con la contraseña usada para el certificado.
Inicie el contenedor con ASP.NET Core configurado para HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Windows con contenedores de Windows
Genere el certificado y configure la máquina local:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
En los comandos anteriores, reemplace por $CREDENTIAL_PLACEHOLDER$
una contraseña.
Cree un archivo docker-compose.debug.yml con el siguiente contenido:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
La contraseña especificada en el archivo docker compose debe coincidir con la contraseña usada para el certificado.
Inicie el contenedor con ASP.NET Core configurado para HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Consulte también
ASP.NET Core usa HTTPS de forma predeterminada. HTTPS se basa en certificados para la confianza, identity y el cifrado.
En este documento se explica cómo ejecutar imágenes de contenedor pregeneradas con HTTPS.
Consulte Desarrollo de aplicaciones de ASP.NET Core con Docker a través de HTTPS para escenarios de desarrollo.
En este ejemplo se necesita la versión Docker 17.06 o posterior del cliente Docker.
Prerrequisitos
El SDK de .NET Core 2.2 o posterior es necesario para algunas de las instrucciones de este documento.
Certificados
Se requiere un certificado de una entidad de certificación para el hospedaje de producción para un dominio. Let's Encrypt es una entidad de certificación que ofrece certificados gratuitos.
Este documento utiliza certificados de desarrollo autofirmados para alojar imágenes preconstruidas en localhost
. Las instrucciones son similares al uso de certificados de producción.
Para los certificados de producción:
- La herramienta
dotnet dev-certs
no es necesaria. - Los certificados no necesitan almacenarse en la ubicación que se usa en las instrucciones. Almacene los certificados en cualquier ubicación fuera del directorio del sitio.
Las instrucciones contenidas en la sección siguiente montan certificados en contenedores mediante la volumes
propiedad en docker-compose.yml. Puede agregar certificados a imágenes de contenedor con un COPY
comando en un Dockerfile, pero no se recomienda. No se recomienda copiar certificados en una imagen por los siguientes motivos:
- Dificulta el uso de la misma imagen para realizar pruebas con certificados de desarrollador.
- Dificulta el uso de la misma imagen para hospedar con certificados de producción.
- Existe un riesgo significativo de divulgación de certificados.
Iniciar un contenedor con soporte https utilizando docker compose
Siga las instrucciones siguientes para la configuración del sistema operativo.
Windows mediante contenedores de Linux
Genere el certificado y configure la máquina local:
dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx" -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
El comando anterior mediante la CLI de .NET:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
En los comandos anteriores, reemplace por $CREDENTIAL_PLACEHOLDER$
una contraseña.
Cree un archivo docker-compose.debug.yml con el siguiente contenido:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
La contraseña especificada en el archivo docker compose debe coincidir con la contraseña usada para el certificado.
Inicie el contenedor con ASP.NET Core configurado para HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
macOS o Linux
Genere el certificado y configure la máquina local:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
dotnet dev-certs https --trust
solo se admite en macOS y Windows. Debe confiar en los certificados en Linux de la manera que admite la distribución. Es probable que tenga que confiar en el certificado en el explorador.
En los comandos anteriores, reemplace por $CREDENTIAL_PLACEHOLDER$
una contraseña.
Cree un archivo docker-compose.debug.yml con el siguiente contenido:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx
volumes:
- ~/.aspnet/https:/https:ro
La contraseña especificada en el archivo docker compose debe coincidir con la contraseña usada para el certificado.
Inicie el contenedor con ASP.NET Core configurado para HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d
Windows con contenedores de Windows
Genere el certificado y configure la máquina local:
dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust
En los comandos anteriores, reemplace por $CREDENTIAL_PLACEHOLDER$
una contraseña.
Cree un archivo docker-compose.debug.yml con el siguiente contenido:
version: '3.4'
services:
webapp:
image: mcr.microsoft.com/dotnet/samples:aspnetapp
ports:
- 80
- 443
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
- ASPNETCORE_Kestrel__Certificates__Default__Password=password
- ASPNETCORE_Kestrel__Certificates__Default__Path=C:\https\aspnetapp.pfx
volumes:
- ${USERPROFILE}\.aspnet\https:C:\https:ro
La contraseña especificada en el archivo docker compose debe coincidir con la contraseña usada para el certificado.
Inicie el contenedor con ASP.NET Core configurado para HTTPS:
docker-compose -f "docker-compose.debug.yml" up -d