AWS kündigte kürzlich die Notwendigkeit an:
Aktualisieren Sie Ihre Amazon RDS SSL / TLS-Zertifikate bis zum 31. Oktober 2019
Ich habe eine Rails-Anwendung, die mit einem klassischen Elastic Beanstalk-Load-Balancer gehostet wird, der über RDS eine Verbindung zu einer Postgres-Datenbank herstellt.
Die erforderlichen Schritte laut Amazon sind:
- Laden Sie das neue SSL / TLS-Zertifikat von Verwenden von SSL / TLS zum Verschlüsseln einer Verbindung zu einer DB-Instanz herunter.
- Aktualisieren Sie Ihre Datenbankanwendungen, um das neue SSL / TLS-Zertifikat zu verwenden.
- Ändern Sie die DB-Instanz, um die Zertifizierungsstelle von rds-ca-2015 in rds-ca-2019 zu ändern.
( https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html )
Bedeutet dies, dass ich die Schritte 1 und 2 nicht ausführen muss, da ich meine Load Balancer so eingerichtet habe (Verbindung zu meinen EC2-Instanzen über HTTP-Port 80 (nicht SSL)? Und nur Schritt 3?
Oder muss ich die aktualisierten Zertifikate herunterladen und manuell installieren / zu meinen Load Balancer- oder EC-Instanzen hinzufügen? Ich bin mir nicht sicher, wie ich das machen soll.
.ebextensions
. Am Ende , nachdem es zu testen, konnte ich bestätigen , dass sie haben die neue RDS - Verbindung automatisch vertrauen. Wenn die RDS DB-Instanz wie hier beschrieben von der EB-Umgebung entkoppelt wurdehttps://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html
, bin ich mir des Ergebnisses nicht sicher.Antworten:
Schritt 1 und 2 sind nur erforderlich, wenn Ihre Anwendungsverbindung mit MySQL TLS-verschlüsselt ist .
Ändern Sie nicht die LB TLS- Einstellung, da dies Ihre Anwendung beschädigen kann. LB TLS ist etwas anderes, während RDS TLS etwas anderes ist.
Wenn Ihre Anwendung nur eine einfache Verbindung erstellt, können Sie Schritt 3 sicher direkt ausführen.
Normalerweise sollte sich die Datenbank für DB in einem privaten Subnetz befinden und nicht öffentlich zugänglich sein. TLS ist hilfreich, wenn sich Ihre Datenbank- und Backend-Verbindung im Internet befindet und nicht in VPC.
quelle
eb ssh
zu meinem Server eine Verbindung von dort zur Datenbank herstellepsql
und dann ausführeselect ssl_is_used()
, wird true zurückgegeben! Meine RDS-Instanz ist wie hier beschrieben an meine EB-Umgebung gebunden . Docs.aws.amazon.com/elasticbeanstalk/latest/dg/… . Da EB automatisch mit RDS verbunden ist, befürchte ich, dass durch Ändern der Zertifizierungsstelle die generierte Verbindung unterbrochen wird.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
denen gleiche ENV Variablen ruftRDS_DB_NAME
,RDS_USERNAME
etc. Es ist nicht festgelegt SSL erforderlich ist es (auch wenn es konnte). Obwohl ich die Standardeinstellung auf EB denken muss so etwas wieallow
,prefer
, oderrequire
, konfiguriert über eine Umgebungsvariable oder so etwas. Vgl.: postgresql.org/docs/current/… . Es ist definitiv keine der anderen 3, dadisable
SSL deaktiviert werden würde und die anderenverify
Optionen fehlgeschlagen sind, als ich sie auf der CLI getestet habe.Es gibt eine viel einfachere Antwort auf die Frage:
Folgen Sie einfach Punkt 3 und ignorieren Sie 1 und 2.
(Ja, ich habe diese Antwort selbst geschrieben).
quelle