Aktualisieren Sie Amazon RDS SSL / TLS-Zertifikate - Elastic Beanstalk

14

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:

  1. Laden Sie das neue SSL / TLS-Zertifikat von Verwenden von SSL / TLS zum Verschlüsseln einer Verbindung zu einer DB-Instanz herunter.
  2. Aktualisieren Sie Ihre Datenbankanwendungen, um das neue SSL / TLS-Zertifikat zu verwenden.
  3. Ä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?

LoadBalancerListeners

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.

stwr667
quelle
1
Was mussten Sie am Ende tun? Ich bin nicht klar, was die endgültige Lösung war.
Weber
3
@weber, die Hauptsache, die ich feststellen musste, war, ob die EC2-Instanzen hinter einem Elastic Beanstalk-Load-Balancer mit einer gebundenen RDS-Verbindung dem aktualisierten Zertifikat für 2019 automatisch vertrauen würden oder nicht. Ich war mir nicht sicher, ob ich ihnen manuell über SSH vertrauen oder ihnen z .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 wurde https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html, bin ich mir des Ergebnisses nicht sicher.
stwr667

Antworten:

8

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.

Ändern Sie die DB-Instanz, um die Zertifizierungsstelle von rds-ca-2015 in rds-ca-2019 zu ändern.

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.

Bei einer unverschlüsselten Verbindung zwischen dem MySQL-Client und dem Server kann jemand mit Zugriff auf das Netzwerk Ihren gesamten Datenverkehr überwachen und die zwischen Client und Server gesendeten oder empfangenen Daten überprüfen.

Adiii
quelle
Danke @Adiii. Bist du sicher? Hier docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… wird beschrieben, wie Sie feststellen , ob Ihre DB-Verbindung SSL verwendet. Wenn ich eb sshzu meinem Server eine Verbindung von dort zur Datenbank herstelle psqlund dann ausführe select 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.
stwr667
Ich spreche im Allgemeinen, es hängt von der Anwendung ab, wie es eine Verbindung herstellt, aber der Code, der durch Link it Palin-Verbindung vorgeschlagen 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();
Adiii
2
Danke @Adii. Zu Ihrer Information, ich verwende Postgres, nicht MySQL. Die gute Nachricht ist, dass ich einen Schnappschuss gemacht und gerade Schritt 3 ausprobiert habe. Alles funktioniert immer noch wie erwartet. Selbst wenn vom Anwendungsserver aus erneut eine Verbindung zur Datenbank hergestellt wird, wird weiterhin gemeldet, dass SSL verwendet wird. Daher gehe ich davon aus, dass ElasticBeanstalk das Vertrauen des Zertifikats automatisch verwaltet, wenn die RDS-Instanz an die EB-Umgebung gebunden ist. Danke noch einmal.
stwr667
Wie schaffen Sie eine Verbindung? Haben Sie SSL in der Verbindungszeichenfolge angegeben?
Adiii
Ich habe eine Rails - Anwendung, so dass die Verbindungsinformationen definiert ist , in database.ymldenen gleiche ENV Variablen ruft RDS_DB_NAME, RDS_USERNAMEetc. Es ist nicht festgelegt SSL erforderlich ist es (auch wenn es konnte). Obwohl ich die Standardeinstellung auf EB denken muss so etwas wie allow, prefer, oder require, konfiguriert über eine Umgebungsvariable oder so etwas. Vgl.: postgresql.org/docs/current/… . Es ist definitiv keine der anderen 3, da disableSSL deaktiviert werden würde und die anderen verifyOptionen fehlgeschlagen sind, als ich sie auf der CLI getestet habe.
stwr667
2

Es gibt eine viel einfachere Antwort auf die Frage:

Sie müssen nichts in Ihrer Beanstalk-Umgebung installieren, wenn Sie das CA-Zertifikat aktualisieren, das von dem daran angeschlossenen RDS verwendet wird. https://stackoverflow.com/a/59742149/7051819

Folgen Sie einfach Punkt 3 und ignorieren Sie 1 und 2.

(Ja, ich habe diese Antwort selbst geschrieben).

Rbbn
quelle
3
Ich denke, die Sprungantwort ist herabgestimmt, weil die meisten Produktionsumgebungen RDS NICHT innerhalb der elastischen Bohnenstange verwenden. Die Verwendung von RDS innerhalb von elastischen Bohnenstangen ist möglicherweise gefährlich, da beim Beenden Ihrer Instanz für elastische Bohnenstangen auch Ihre Datenbank beendet wird, was für die Datenaufbewahrung nicht geeignet ist. Im Allgemeinen fragen die Leute nach Umgebungen mit elastischen Bohnenstangen, in denen die RDS-Instanz separat ist.
Jakeatwork