AWS baru-baru ini mengumumkan perlunya untuk:
Perbarui Amazon RDS SSL / TLS Certificates Anda pada 31 Oktober 2019
Saya memiliki aplikasi Rails yang di-host dengan penyeimbang beban Elastic Beanstalk klasik, yang menghubungkan ke Postgres DB menggunakan RDS.
Langkah-langkah yang diperlukan menurut Amazon adalah:
- Unduh sertifikat SSL / TLS baru dari Menggunakan SSL / TLS untuk Mengenkripsi Koneksi ke Mesin Virtual DB.
- Perbarui aplikasi basis data Anda untuk menggunakan sertifikat SSL / TLS baru.
- Ubah instance DB untuk mengubah CA dari rds-ca-2015 ke rds-ca-2019.
( https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html )
Karena saya memiliki penyeimbang beban yang diatur seperti ini (menghubungkan ke instance EC2 saya melalui port HTTP 80 (bukan SSL), apakah ini berarti saya tidak perlu mengikuti langkah 1 dan 2? Dan hanya mengikuti langkah 3?
Atau apakah saya harus mengunduh sertifikat yang diperbarui dan menginstal / menambahkannya ke Load balancer atau EC saya secara manual? Tidak yakin bagaimana melakukannya.
.ebextensions
. Pada akhirnya setelah pengujian itu, saya bisa mengkonfirmasi bahwa mereka tidak secara otomatis mempercayai koneksi RDS baru. Jika instance RDS DB dipisahkan dari lingkungan EB seperti yang dijelaskan di sinihttps://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html
, maka saya tidak yakin hasilnya.Jawaban:
Langkah 1 & 2 hanya diperlukan jika koneksi aplikasi Anda dengan MySQL terenkripsi TLS .
Jangan mengubah pengaturan LB TLS karena dapat merusak aplikasi Anda, LB TLS adalah sesuatu yang lain, di mana RDS TLS adalah sesuatu yang lain.
Jika aplikasi Anda hanya membuat koneksi biasa, Anda aman untuk melakukan langsung langkah 3.
Biasanya berlatih untuk DB, DB harus dalam subnet pribadi dan tidak boleh diakses dari publik, TLS sangat membantu ketika koneksi Database dan Backend Anda ada di internet, bukan dalam VPC.
sumber
eb ssh
ke server saya, sambungkan dari sana ke DB viapsql
, dan kemudian jalankanselect ssl_is_used()
, ia kembali benar! Contoh RDS saya terkait dengan lingkungan EB saya seperti dijelaskan di sini docs.aws.amazon.com/elasticbeanstalk/latest/dg/… . Karena EB terhubung secara otomatis ke RDS, saya khawatir berdasarkan hal di atas bahwa mengubah CA akan memutus koneksi yang dihasilkan.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
mana panggilan keluar ke variabel ENV sepertiRDS_DB_NAME
,RDS_USERNAME
dll. Ini tidak menentukan untuk memerlukan SSL di sana (walaupun itu bisa). Meskipun saya pikir pengaturan default pada EB harus menjadi sesuatu sepertiallow
,prefer
, ataurequire
, dikonfigurasi melalui variabel lingkungan atau sesuatu. lih: postgresql.org/docs/current/… . Ini jelas bukan salah satu dari 3 lainnya karenadisable
akan mematikan SSL, danverify
opsi lainnya gagal ketika saya mengujinya di CLI.Ada jawaban yang jauh lebih mudah untuk pertanyaan:
Ikuti saja poin 3 dan abaikan 1 dan 2.
(Ya saya sendiri yang menulis jawaban itu).
sumber