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
- 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
- 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