Partilhar via


Hospedagem de imagens ASP.NET Core com o Docker Compose por HTTPS

ASP.NET Core usa HTTPS por padrão. HTTPS depende de certificados para confiança, identidade e criptografia.

Este documento explica como executar imagens de contêiner pré-criadas com HTTPS.

Consulte Desenvolvimento de Aplicações ASP.NET Core com Docker em HTTPS para cenários de desenvolvimento.

Este exemplo requer Docker 17.06 ou posterior do cliente Docker.

Pré-requisitos

O SDK do .NET Core 2.2 ou posterior é necessário para algumas das instruções neste documento.

Certificados

Um certificado de uma autoridade de certificação é necessário para hospedagem em produção para um domínio. Let's Encrypt é uma autoridade de certificação que oferece certificados gratuitos.

Este documento usa certificados de desenvolvimento autoassinados para hospedar imagens pré-construídas em localhost. As instruções são semelhantes à utilização de certificados de produção.

Para os certificados de produção:

  • A ferramenta dotnet dev-certs não é necessária.
  • Os certificados não precisam ser armazenados no local usado nas instruções. Armazene os certificados em qualquer local fora do diretório do site.

As instruções contidas na seção a seguir montam volumes de certificados em contêineres usando a propriedade em docker-compose.yml. Você poderia adicionar certificados às imagens de contêiner com o comando em um Dockerfile, mas isso não é recomendado. Copiar certificados para uma imagem não é recomendado pelos seguintes motivos:

  • Isso dificulta o uso da mesma imagem para testes com certificados de desenvolvedor.
  • Isso dificulta o uso da mesma imagem para hospedagem com certificados de produção.
  • Existe um risco significativo de divulgação de certificados.

Iniciando um contêiner com suporte a https usando docker compose

Use as instruções a seguir para a configuração do sistema operacional.

Windows usando contêineres Linux

Gere certificado e configure a máquina local:

dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx"  -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

O comando anterior usando a CLI do .NET:

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Nos comandos anteriores, substitua $CREDENTIAL_PLACEHOLDER$ por uma senha.

Crie um arquivo docker-compose.debug.yml com o seguinte conteúdo:

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

A senha especificada no arquivo de composição do docker deve corresponder à senha usada para o certificado.

Inicie o contêiner com ASP.NET Core configurado para HTTPS:

docker-compose -f "docker-compose.debug.yml" up -d

macOS ou Linux

Gere certificado e configure a máquina local:

dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

No Linux, dotnet dev-certs https --trust requer o SDK do .NET 9 ou posterior. Para Linux no .NET 8.0.401 SDK e versões anteriores, consulte a documentação da sua distribuição Linux para confiar em um certificado.

Nos comandos anteriores, substitua $CREDENTIAL_PLACEHOLDER$ por uma senha.

Crie um arquivo docker-compose.debug.yml com o seguinte conteúdo:

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

A senha especificada no arquivo de composição do docker deve corresponder à senha usada para o certificado.

Inicie o contêiner com ASP.NET Core configurado para HTTPS:

docker-compose -f "docker-compose.debug.yml" up -d

Windows usando contêineres do Windows

Gere certificado e configure a máquina local:

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Nos comandos anteriores, substitua $CREDENTIAL_PLACEHOLDER$ por uma senha.

Crie um arquivo docker-compose.debug.yml com o seguinte conteúdo:

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

A senha especificada no arquivo de composição do docker deve corresponder à senha usada para o certificado.

Inicie o contêiner com ASP.NET Core configurado para HTTPS:

docker-compose -f "docker-compose.debug.yml" up -d

Ver também

ASP.NET Core usa HTTPS por padrão. HTTPS depende de certificados para confiança, identidade e criptografia.

Este documento explica como executar imagens de contêiner pré-criadas com HTTPS.

Consulte Desenvolvimento de aplicações ASP.NET Core com o Docker via HTTPS para os cenários de desenvolvimento.

Este exemplo requer Docker 17.06 ou posterior do cliente Docker.

Pré-requisitos

O SDK do .NET Core 2.2 ou posterior é necessário para algumas das instruções neste documento.

Certificados

Um certificado de uma autoridade de certificação é necessário para hosting de produção de um domínio. Let's Encrypt é uma autoridade de certificação que oferece certificados gratuitos.

Este documento usa certificados de desenvolvimento autoassinados para hospedar imagens pré-construídas em localhost. As instruções são semelhantes à utilização de certificados de produção.

Para os certificados de produção:

  • A ferramenta dotnet dev-certs não é necessária.
  • Os certificados não precisam ser armazenados no local usado nas instruções. Armazene os certificados em qualquer local fora do diretório do site.

As instruções contidas na seção a seguir montam certificados de volume em contêineres usando a propriedade em docker-compose.yml. Você pode adicionar certificados em imagens de contêiner com um comando em umDockerfile , mas isso não é recomendado. Copiar certificados para uma imagem não é recomendado pelos seguintes motivos:

  • Isso dificulta o uso da mesma imagem para testes com certificados de desenvolvedor.
  • Isso dificulta o uso da mesma imagem para hospedagem com certificados de produção.
  • Existe um risco significativo de divulgação de certificados.

Iniciando um contêiner com suporte a https usando docker compose

Use as instruções a seguir para a configuração do sistema operacional.

Windows usando contêineres Linux

Gere certificado e configure a máquina local:

dotnet dev-certs https -ep "$env:USERPROFILE\.aspnet\https\aspnetapp.pfx"  -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

O comando anterior usando a CLI do .NET:

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Nos comandos anteriores, substitua $CREDENTIAL_PLACEHOLDER$ por uma senha.

Crie um arquivo docker-compose.debug.yml com o seguinte conteúdo:

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

A senha especificada no arquivo de composição do docker deve corresponder à senha usada para o certificado.

Inicie o contêiner com ASP.NET Core configurado para HTTPS:

docker-compose -f "docker-compose.debug.yml" up -d

macOS ou Linux

Gere certificado e configure a 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 só é suportado no macOS e no Windows. Você precisa confiar em certificados no Linux da maneira que é suportada pela sua distribuição. É provável que você precise confiar no certificado em seu navegador.

Nos comandos anteriores, substitua $CREDENTIAL_PLACEHOLDER$ por uma senha.

Crie um arquivo docker-compose.debug.yml com o seguinte conteúdo:

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

A senha especificada no arquivo de composição do docker deve corresponder à senha usada para o certificado.

Inicie o contêiner com ASP.NET Core configurado para HTTPS:

docker-compose -f "docker-compose.debug.yml" up -d

Windows usando contêineres do Windows

Gere certificado e configure a máquina local:

dotnet dev-certs https -ep %USERPROFILE%\.aspnet\https\aspnetapp.pfx -p $CREDENTIAL_PLACEHOLDER$
dotnet dev-certs https --trust

Nos comandos anteriores, substitua $CREDENTIAL_PLACEHOLDER$ por uma senha.

Crie um arquivo docker-compose.debug.yml com o seguinte conteúdo:

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

A senha especificada no arquivo de composição do docker deve corresponder à senha usada para o certificado.

Inicie o contêiner com ASP.NET Core configurado para HTTPS:

docker-compose -f "docker-compose.debug.yml" up -d

Ver também