AWS niedawno ogłosiło potrzebę:
Zaktualizuj swoje certyfikaty Amazon RDS SSL / TLS do 31 października 2019 r
Mam aplikację Rails obsługiwaną przez klasyczny moduł równoważenia obciążenia Elastic Beanstalk, który łączy się z bazą danych Postgres za pomocą RDS.
Wymagane kroki według Amazon to:
- Pobierz nowy certyfikat SSL / TLS z Używanie SSL / TLS do szyfrowania połączenia z wystąpieniem bazy danych.
- Zaktualizuj aplikacje bazy danych, aby używały nowego certyfikatu SSL / TLS.
- Zmodyfikuj instancję DB, aby zmienić CA z rds-ca-2015 na rds-ca-2019.
( https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html )
Skoro mam tak skonfigurowane moduły równoważenia obciążenia (łączenie się z moimi instancjami EC2 przez port HTTP 80 (nie SSL), czy to oznacza, że nie muszę wykonywać kroków 1 i 2? I tylko krok 3?
Czy też muszę pobierać zaktualizowane certyfikaty i instalować / dodawać je ręcznie do modułu równoważenia obciążenia lub instancji EC? Nie jestem pewien, jak to zrobić.
.ebextensions
. Za pomocą . W końcu po przetestowaniu go, mogę potwierdzić, że nie automatycznie ufa nowe połączenie RDS. Jeśli instancja RDS DB została odłączona od środowiska EB, jak opisano tutajhttps://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html
, nie jestem pewien wyniku.Odpowiedzi:
Kroki 1 i 2 są wymagane tylko, jeśli połączenie aplikacji z MySQL jest szyfrowane TLS .
Nie zmieniaj ustawienia LB TLS , ponieważ może to spowodować uszkodzenie aplikacji, LB TLS to coś innego, a RDS TLS to coś innego.
Jeśli twoja aplikacja tworzy zwykłe połączenie, możesz wykonać bezpośrednio krok 3.
Zazwyczaj ćwiczysz dla DB, DB powinien znajdować się w prywatnej podsieci i nie powinien być dostępny publicznie, TLS jest pomocny, gdy twoje połączenie z bazą danych i zapleczem jest w Internecie, a nie w VPC.
źródło
eb ssh
z moim serwerem, stamtąd połączę się z bazą danych za pośrednictwempsql
, a następnie uruchomięselect ssl_is_used()
, to zwraca wartość true! Moja instancja RDS jest powiązana z moim środowiskiem EB, jak opisano tutaj docs.aws.amazon.com/elasticbeanstalk/latest/dg/… . Ponieważ EB jest automatycznie połączony z RDS, obawiam się na podstawie powyższego, że zmiana urzędu certyfikacji spowoduje przerwanie wygenerowanego połączenia.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
którym wzywa się do zmiennych takich jak ENVRDS_DB_NAME
,RDS_USERNAME
itd. To nie określa wymaganie SSL tam (choć może). Chociaż myślę, że domyślnym ustawieniem na EB musi być coś podobnegoallow
,prefer
alborequire
, konfigurowane za pomocą zmiennej środowiskowej czy coś. cf: postgresql.org/docs/current/… . Zdecydowanie nie jest to jedna z pozostałych 3 opcji, ponieważdisable
spowodowałaby wyłączenie protokołu SSL, a inneverify
opcje zawiodły podczas testowania ich na interfejsie CLI.Odpowiedź na pytanie jest znacznie łatwiejsza:
Wystarczy postępować zgodnie z punktem 3 i zignorować 1 i 2.
(Tak, sam napisałem tę odpowiedź).
źródło