Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Por Rick Anderson
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 usando a interface de linha de comando (CLI) do .NET. Para obter instruções sobre como executar o Docker em desenvolvimento com o Visual Studio, consulte Desenvolvendo aplicativos ASP.NET principal com o Docker sobre HTTPS.
Este exemplo requer Docker 17.06 ou posterior do cliente Docker.
Pré-requisitos
O SDK .NET atual.
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. O certificado gerado por dotnet dev-certs destina-se exclusivamente ao localhost e não deve ser utilizado num ambiente como o Kubernetes. Para suportar HTTPS num cluster de Kubernetes, use as ferramentas fornecidas por Gerencie certificados TLS num cluster para configurarTLS em pods.
Use dotnet dev-certs para criar certificados autoassinados para desenvolvimento e teste.
Para certificados de produção:
- A ferramenta
dotnet dev-certsnão é necessária. - Os certificados não precisam ser armazenados no local usado nas instruções. Qualquer local deve funcionar, embora o armazenamento de certificados no diretório do site não seja recomendado.
As instruções contidas na seção seguinte fazem a montagem de certificados como volumes em contêineres usando a opção de linha de comando -v do Docker. Você pode adicionar certificados em imagens de contêiner com um COPY comando em um Dockerfile, mas isso não é recomendado. Copiar certificados para uma imagem não é recomendado pelos seguintes motivos:
- É difícil usar a mesma imagem para testar com certificados de desenvolvedor.
- É difícil usar a mesma imagem para hospedagem com certificados de produção.
- Existe um risco significativo de divulgação de certificados.
Executando imagens de contêiner pré-criadas com HTTPS
Use as instruções a seguir para a configuração do sistema operacional.
Windows usando contêineres Linux
Gere um 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.
Execute a imagem de contêiner com o ASP.NET Core configurado para HTTPS em um shell de comando:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
No código anterior, substitua <CREDENTIAL_PLACEHOLDER> pela senha. A senha deve corresponder à senha usada para o certificado.
Ao usar o PowerShell, substitua %USERPROFILE% por $env:USERPROFILE.
Nota: Neste caso, a certidão deve ser um .pfx ficheiro. A utilização de um .crt ficheiro ou .key com ou sem a senha não é suportada com o container de amostra. Por exemplo, ao especificar um .crt arquivo, o contêiner pode retornar mensagens de erro como "O SSL do modo de servidor deve usar um certificado com a chave privada associada.". Ao usar o WSL, valide o caminho de montagem para garantir que o certificado seja carregado corretamente.
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 ou SDK anterior, consulte a documentação da sua distribuição Linux para confiar em um certificado.
Nos comandos anteriores, substitua <CREDENTIAL_PLACEHOLDER> por uma senha.
Execute a imagem do contêiner com o ASP.NET Core configurado para HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v ${HOME}/.aspnet/https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
No código anterior, substitua <CREDENTIAL_PLACEHOLDER> pela senha. A senha deve corresponder à senha usada para o certificado.
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. Ao usar o PowerShell, substitua %USERPROFILE% por $env:USERPROFILE.
Execute a imagem do contêiner com o ASP.NET Core configurado para HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=c:\https\aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:C:\https\ --user ContainerAdministrator mcr.microsoft.com/dotnet/samples:aspnetapp
OBSERVAÇÃO:<CREDENTIAL_PLACEHOLDER> é um espaço reservado para a senha padrão dos Kestrel certificados.
A senha deve corresponder à senha usada para o certificado. Ao usar o PowerShell, substitua %USERPROFILE% por $env:USERPROFILE.
Desenvolvendo ASP.NET aplicativos principais com Docker sobre HTTPS
Consulte Developing ASP.NET Core Applications with Docker over HTTPS para obter informações e exemplos sobre como desenvolver aplicativos ASP.NET Core com HTTPS em contêineres do Docker.
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 usando a interface de linha de comando (CLI) do .NET. Para obter instruções sobre como executar o Docker em desenvolvimento com o Visual Studio, consulte Desenvolvendo aplicativos ASP.NET principal com o Docker sobre HTTPS.
Este exemplo requer Docker 17.06 ou posterior do cliente Docker.
Pré-requisitos
O SDK .NET atual.
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. O certificado gerado por dotnet dev-certs destina-se exclusivamente ao localhost e não deve ser utilizado num ambiente como o Kubernetes. Para suportar HTTPS num cluster de Kubernetes, use as ferramentas fornecidas por Gerencie certificados TLS num cluster para configurarTLS em pods.
Use dotnet dev-certs para criar certificados autoassinados para desenvolvimento e teste.
Para certificados de produção:
- A ferramenta
dotnet dev-certsnão é necessária. - Os certificados não precisam ser armazenados no local usado nas instruções. Qualquer local deve funcionar, embora o armazenamento de certificados no diretório do site não seja recomendado.
As instruções contidas na seção seguinte fazem a montagem de certificados como volumes em contêineres usando a opção de linha de comando -v do Docker. Você pode adicionar certificados em imagens de contêiner com um COPY comando em um Dockerfile, mas isso não é recomendado. Copiar certificados para uma imagem não é recomendado pelos seguintes motivos:
- É difícil usar a mesma imagem para testar com certificados de desenvolvedor.
- É difícil usar a mesma imagem para hospedagem com certificados de produção.
- Existe um risco significativo de divulgação de certificados.
Executando imagens de contêiner pré-criadas com HTTPS
Use as instruções a seguir para a configuração do sistema operacional.
Windows usando contêineres Linux
Gere um 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.
Execute a imagem de contêiner com o ASP.NET Core configurado para HTTPS em um shell de comando:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
No código anterior, substitua <CREDENTIAL_PLACEHOLDER> pela senha. A senha deve corresponder à senha usada para o certificado.
Ao usar o PowerShell, substitua %USERPROFILE% por $env:USERPROFILE.
Nota: Neste caso, a certidão deve ser um .pfx ficheiro. A utilização de um .crt ficheiro ou .key com ou sem a senha não é suportada com o container de amostra. Por exemplo, ao especificar um .crt arquivo, o contêiner pode retornar mensagens de erro como "O SSL do modo de servidor deve usar um certificado com a chave privada associada.". Ao usar o WSL, valide o caminho de montagem para garantir que o certificado seja carregado corretamente.
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.
Execute a imagem do contêiner com o ASP.NET Core configurado para HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=/https/aspnetapp.pfx -v ${HOME}/.aspnet/https:/https/ mcr.microsoft.com/dotnet/samples:aspnetapp
No código anterior, substitua <CREDENTIAL_PLACEHOLDER> pela senha. A senha deve corresponder à senha usada para o certificado.
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. Ao usar o PowerShell, substitua %USERPROFILE% por $env:USERPROFILE.
Execute a imagem do contêiner com o ASP.NET Core configurado para HTTPS:
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker run --rm -it -p 8000:80 -p 8001:443 -e ASPNETCORE_URLS="https://+;http://+" -e ASPNETCORE_HTTPS_PORTS=8001 -e ASPNETCORE_Kestrel__Certificates__Default__Password="<CREDENTIAL_PLACEHOLDER>" -e ASPNETCORE_Kestrel__Certificates__Default__Path=c:\https\aspnetapp.pfx -v %USERPROFILE%\.aspnet\https:C:\https\ --user ContainerAdministrator mcr.microsoft.com/dotnet/samples:aspnetapp
OBSERVAÇÃO:<CREDENTIAL_PLACEHOLDER> é um espaço reservado para a senha padrão dos Kestrel certificados.
A senha deve corresponder à senha usada para o certificado. Ao usar o PowerShell, substitua %USERPROFILE% por $env:USERPROFILE.
Desenvolvendo ASP.NET aplicativos principais com Docker sobre HTTPS
Consulte Developing ASP.NET Core Applications with Docker over HTTPS para obter informações e exemplos sobre como desenvolver aplicativos ASP.NET Core com HTTPS em contêineres do Docker.