Compartir a través de


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

Consulte también