Encerrar o HTTPS em instâncias do EC2 que executam Python - 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 EC2 que executam Python

Para os tipos de contêiner Python que usam Apache HTTP Server com a Web Server Gateway Interface (WSGI), você usa um arquivo de configuração para habilitar o Apache HTTP Server a usar o HTTPS.

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

  • A chave packages usa o yum para instalar mod24_ssl.

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

    /etc/httpd/conf.d/ssl.conf

    Configura o servidor Apache. Se o seu aplicativo não estiver nomeado como application.py, substitua o texto destacado no valor para WSGIScriptAlias pelo caminho local para seu aplicativo. Por exemplo, um aplicativo django pode estar em django/wsgi.py. A localização deve corresponder ao valor da opção WSGIPath que você definiu para seu ambiente.

    De acordo com os requisitos do seu aplicativo, você também pode precisar adicionar outros diretórios ao parâmetro python-path.

    /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 interrompe o serviço httpd após tudo estar configurado, para que ele use o novo certificado e o arquivo https.conf.

nota

O exemplo funciona apenas em ambientes usando a Plataforma Python.

exemplo .ebextensions/https-instance.config
packages: yum: mod24_ssl : [] files: /etc/httpd/conf.d/ssl.conf: mode: "000644" owner: root group: root content: | LoadModule wsgi_module modules/mod_wsgi.so WSGIPythonHome /opt/python/run/baselinenv WSGISocketPrefix run/wsgi WSGIRestrictEmbedded On Listen 443 <VirtualHost *:443> SSLEngine on SSLCertificateFile "/etc/pki/tls/certs/server.crt" SSLCertificateKeyFile "/etc/pki/tls/certs/server.key" Alias /static/ /opt/python/current/app/static/ <Directory /opt/python/current/app/static> Order allow,deny Allow from all </Directory> WSGIScriptAlias / /opt/python/current/app/application.py <Directory /opt/python/current/app> Require all granted </Directory> WSGIDaemonProcess wsgi-ssl processes=1 threads=15 display-name=%{GROUP} \ python-path=/opt/python/current/app \ python-home=/opt/python/run/venv \ home=/opt/python/current/app \ user=wsgi \ group=wsgi WSGIProcessGroup wsgi-ssl </VirtualHost> /etc/pki/tls/certs/server.crt: mode: "000400" owner: root group: root content: | -----BEGIN CERTIFICATE----- certificate file contents -----END CERTIFICATE----- /etc/pki/tls/certs/server.key: mode: "000400" owner: root group: root content: | -----BEGIN RSA PRIVATE KEY----- private key contents # See note below. -----END RSA PRIVATE KEY----- container_commands: 01killhttpd: command: "killall httpd" 02waitforhttpddeath: command: "sleep 3"
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.

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 load balancer para passar o tráfego seguro inalterado ou descriptografar e criptografar novamente para criptografia de ponta a ponta.