A AWS anunciou recentemente a necessidade de:
Atualize seus certificados SSL / TLS do Amazon RDS até 31 de outubro de 2019
Eu tenho um aplicativo Rails hospedado com um balanceador de carga clássico do Elastic Beanstalk, que se conecta a um banco de dados Postgres usando RDS.
As etapas necessárias de acordo com a Amazon são:
- Faça o download do novo certificado SSL / TLS em Usando SSL / TLS para criptografar uma conexão com uma instância de banco de dados.
- Atualize seus aplicativos de banco de dados para usar o novo certificado SSL / TLS.
- Modifique a instância do banco de dados para alterar a CA de rds-ca-2015 para rds-ca-2019.
( https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html )
Como meus balanceadores de carga estão configurados dessa maneira (conectando-me às minhas instâncias do EC2 via porta HTTP 80 (não SSL)), isso significa que não preciso seguir as etapas 1 e 2 e seguir apenas a etapa 3?
Ou tenho que baixar os certificados atualizados e instalá-los / adicioná-los ao meu balanceador de carga ou instâncias do EC manualmente? Não tenho certeza de como fazer isso.
.ebextensions
. No final, após testá-lo, pude confirmar que eles se confiar automaticamente a nova conexão RDS. Se a instância do RDS DB foi dissociada do ambiente EB, conforme descrito aquihttps://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html
, não tenho certeza do resultado.Respostas:
As etapas 1 e 2 são necessárias apenas se a conexão do seu aplicativo com o MySQL for criptografada por TLS .
Não altere a configuração do LB TLS , pois isso pode interromper o seu aplicativo; o LB TLS é outra coisa, enquanto o RDS TLS é outra coisa.
Se o seu aplicativo apenas criar uma conexão simples, você poderá executar diretamente a etapa 3.
Normalmente, pratique para DB, DB deve estar em sub-rede privada e não deve ser acessível ao público, o TLS é útil quando sua conexão de Banco de Dados e Back-end estiver na Internet, não no VPC.
fonte
eb ssh
no meu servidor, conecto a partir daí ao DB viapsql
e, em seguidaselect ssl_is_used()
, corro , ele retorna true! Minha instância do RDS está vinculada ao meu ambiente de EB, conforme descrito aqui docs.aws.amazon.com/elasticbeanstalk/latest/dg/… . Como o EB é conectado automaticamente ao RDS, estou preocupado com o exposto acima, que alterar a CA interromperá a conexão gerada.var mysql = require('mysql'); var connection = mysql.createConnection({ host : process.env.RDS_HOSTNAME, user : process.env.RDS_USERNAME, password : process.env.RDS_PASSWORD, port : process.env.RDS_PORT }); connection.connect(function(err) { if (err) { console.error('Database connection failed: ' + err.stack); return; } console.log('Connected to database.'); }); connection.end();
database.yml
chamar variáveis ENV comoRDS_DB_NAME
,RDS_USERNAME
etc. Não especifica para exigir SSL lá (mesmo que pudesse). Embora eu acho que a configuração padrão na EB deve ser algo comoallow
,prefer
ourequire
, configurado através de uma variável de ambiente ou algo assim. cf: postgresql.org/docs/current/… . Definitivamente, não é um dos outros 3 porquedisable
desativaria o SSL, e as outrasverify
opções falharam quando os testei na CLI.Há uma resposta muito mais fácil para a pergunta:
Basta seguir o ponto 3 e ignorar 1 e 2.
(Sim, eu mesmo escrevi essa resposta).
fonte