Encerrar o HTTPS em instâncias do Amazon EC2 executando .NET Core no Linux - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Encerrar o HTTPS em instâncias do Amazon EC2 executando .NET Core no Linux

Para os tipos de contêiner .NET Core no Linux, habilite o HTTPS com um .ebextensions arquivo de configuração e um arquivo de configuração nginx que configura o servidor nginx para usar HTTPS.

Adicione o seguinte trecho ao seu arquivo de configuração, substituindo os espaços reservados do certificado e da chave privada como instruído, e salve-o no diretório .ebextensions. O arquivo de configuração executa as seguintes tarefas:

  • A chave files cria os seguintes arquivos na instância:

    /etc/pki/tls/certs/server.crt

    Cria o arquivo de certificado na instância. Substitua o conteúdo do arquivo de certificado pelo conteúdo do seu certificado.

    nota

    YAML depende de um recuo consistente. Compare o nível de recuo ao substituir o conteúdo em um arquivo de configuração de exemplo e se confira se o editor de texto usa espaços, e não caracteres de tabulação, como recuo.

    Se você tiver certificados intermediários, inclua-os no server.crt depois do certificado do site.

    -----BEGIN CERTIFICATE----- certificate file contents -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- first intermediate certificate -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- second intermediate certificate -----END CERTIFICATE-----
    /etc/pki/tls/certs/server.key

    Cria o arquivo de chave privada na instância. Substitua o conteúdo da chave privada pelo conteúdo da chave privada usada para criar a solicitação de certificado ou o certificado autoassinado.

  • A chave container_commands reinicia o servidor nginx depois que tudo é configurado para o servidor carregar o arquivo de configuração nginx.

exemplo .ebextensions/https-instance.config
files: /etc/pki/tls/certs/server.crt: content: | -----BEGIN CERTIFICATE----- certificate file contents -----END CERTIFICATE----- /etc/pki/tls/certs/server.key: content: | -----BEGIN RSA PRIVATE KEY----- private key contents # See note below. -----END RSA PRIVATE KEY----- container_commands: 01restart_nginx: command: "systemctl restart nginx"
nota

Evite confirmar um arquivo de configuração que contenha sua chave privada para o controle de origem. Depois que você tiver testado a configuração e confirmado se ela está funcionando, armazene a chave privada no Amazon S3 e modifique a configuração para fazer download dele durante a implantação. Para obter instruções, consulte Armazenar chaves privadas com segurança no Amazon S3.

Insira o seguinte em um arquivo com a extensão .conf no diretório .platform/nginx/conf.d/ do seu pacote de origem (por ex. .platform/nginx/conf.d/https.conf). Substitua app_port pelo número da porta na qual seu aplicativo escuta. Este exemplo configura o servidor nginx para escutar na porta 443 usando SSL. Para obter mais informações sobre esses arquivos de configuração na plataforma .NET Core no Linux, consulte Configurar o servidor de proxy.

exemplo .platform/nginx/conf.d/https.conf
# HTTPS server server { listen 443 ssl; server_name localhost; ssl_certificate /etc/pki/tls/certs/server.crt; ssl_certificate_key /etc/pki/tls/certs/server.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { proxy_pass http://localhost:app_port; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } }

Em um ambiente de instância única, você também deve modificar o grupo de segurança da instância para habilitar o tráfego na porta 443. O seguinte arquivo de configuração recupera a ID do grupo de segurança usando uma função AWS CloudFormation e adiciona uma regra a ela.

exemplo .ebextensions/https-instance-single.config
Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]} IpProtocol: tcp ToPort: 443 FromPort: 443 CidrIp: 0.0.0.0/0

Para um ambiente com balanceamento de carga, configure o balanceador de carga para passar o tráfego seguro inalterado ou descriptografar e criptografar novamente para criptografia de ponta a ponta.