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á.
Encerramento de HTTPS em EC2 instâncias 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
packagesusa o yum para instalarmod24_ssl. -
A chave
filescria 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 paraWSGIScriptAliaspelo caminho local para seu aplicativo. Por exemplo, um aplicativo django pode estar emdjango/wsgi.py. A localização deve corresponder ao valor da opçãoWSGIPathque 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.
certificate file contentsSubstitua 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.crtdepois 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.
private key contentsSubstitua pelo conteúdo da chave privada usada para criar a solicitação de certificado ou o certificado autoassinado.
-
A chave
container_commandsinterrompe o serviço httpd após tudo estar configurado, para que ele use o novo certificado e o arquivohttps.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 arquivo de configuração a seguir recupera a ID do grupo de segurança usando uma AWS CloudFormation função e adiciona uma regra a ela.
exemplo .ebextensions/ .config https-instance-single
Resources:
sslSecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: {"Fn::GetAtt" : ["AWSEBSecurityGroup", "GroupId"]}
IpProtocol: tcp
ToPort: 443
FromPort: 443
CidrIp: 0.0.0.0/0Para um ambiente com balanceamento de carga, você configura o balanceador de carga para passar tráfego seguro intocado ou descriptografar e recriptografar para criptografia. end-to-end