AWS anunció recientemente la necesidad de:
Actualice sus certificados SSL / TLS de Amazon RDS antes del 31 de octubre de 2019
Tengo una aplicación Rails alojada con un equilibrador de carga Elastic Beanstalk clásico, que se conecta a una base de datos Postgres usando RDS.
Los pasos requeridos según Amazon son:
- Descargue el nuevo certificado SSL / TLS de Uso de SSL / TLS para cifrar una conexión a una instancia de base de datos.
- Actualice las aplicaciones de su base de datos para usar el nuevo certificado SSL / TLS.
- Modifique la instancia de DB para cambiar la CA de rds-ca-2015 a rds-ca-2019.
( https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html )
Dado que tengo mis equilibradores de carga configurados de esta manera (conectándome a mis instancias EC2 a través del puerto HTTP 80 (no SSL), ¿significa esto que no necesito seguir los pasos 1 y 2? ¿Y solo seguir el paso 3?
¿O tengo que descargar los certificados actualizados e instalarlos / agregarlos a mi equilibrador de carga o instancias de EC manualmente? No estoy seguro de cómo hacer eso.
.ebextensions
. Al final después de probarlo, pude confirmar que tenían confían automáticamente la nueva conexión RDS. Si la instancia de RDS DB se desacopla del entorno EB como se describe aquíhttps://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html
, entonces no estoy seguro del resultado.Respuestas:
Los pasos 1 y 2 solo son necesarios si la conexión de su aplicación con MySQL está cifrada con TLS .
No cambie la configuración de LB TLS , puede interrumpir su aplicación, LB TLS es otra cosa, donde RDS TLS es otra cosa.
Si su aplicación solo crea una conexión simple, puede realizar directamente el paso 3.
Normalmente, la práctica para DB, DB debe estar en una subred privada y no debe ser accesible desde el público, TLS es útil cuando su base de datos y conexión de back-end está en Internet, no dentro de VPC.
fuente
eb ssh
a mi servidor, me conecto desde allí a la base de datos a través depsql
, y luego ejecutoselect ssl_is_used()
, ¡vuelve verdadero! Mi instancia de RDS está vinculada a mi entorno EB como se describe aquí docs.aws.amazon.com/elasticbeanstalk/latest/dg/… . Como EB se conecta automáticamente a RDS, me preocupa, según lo anterior, que cambiar la CA interrumpirá la conexión generada.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
las llamadas a variables ENV comoRDS_DB_NAME
,RDS_USERNAME
etc. No especifica que se requiera SSL allí (aunque podría). Aunque creo que la configuración predeterminada de EB debe ser algo así comoallow
,prefer
orequire
, configurado a través de una variable de entorno o algo así. cf: postgresql.org/docs/current/… . Definitivamente no es uno de los otros 3 porquedisable
apagaría SSL, y las otrasverify
opciones fallaron cuando las probé en la CLI.Hay una respuesta mucho más fácil a la pregunta:
Simplemente siga el punto 3 e ignore 1 y 2.
(Sí, escribí esa respuesta yo mismo).
fuente