Amazon RDS SSL / TLS Sertifikalarını Güncelleme - Elastik Fasulye


14

AWS kısa süre önce şunları yapma gereğini açıkladı:

Amazon RDS SSL / TLS Sertifikalarınızı 31 Ekim 2019 tarihine kadar güncelleyin

RDS kullanarak bir Postgres DB bağlanan klasik bir Elastik Beanstalk yük dengeleyici ile barındırılan bir Rails uygulaması var.

Amazon'a göre gerekli adımlar:

  1. Bir DB Eşgörünümüne Bağlantı Şifrelemek için SSL / TLS Kullanmadan yeni SSL / TLS sertifikasını indirin.
  2. Veritabanı uygulamalarınızı yeni SSL / TLS sertifikasını kullanacak şekilde güncelleyin.
  3. CA'yı rds-ca-2015'ten rds-ca-2019'a değiştirmek için DB örneğini değiştirin.

( https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL-certificate-rotation.html )

Yük dengeleyicilerimi bu şekilde kurduğumdan (EC2 bulut sunucularıma HTTP bağlantı noktası 80 (SSL değil) aracılığıyla bağlandığım için), 1. ve 2. adımları izlememe gerek olmadığı anlamına mı geliyor?

LoadBalancerListeners

Yoksa güncellenmiş sertifikaları indirip yük dengeleyicime veya EC örneklerine manuel olarak yüklemem / eklemem mi gerekiyor? Bunu nasıl yapacağınızdan emin değilim.


1
sonunda ne yaptın? Im nihai çözüm ne olduğunu net değil.
weber

3
@weber, belirlemem gereken en önemli şey, bağlı bir RDS bağlantısı olan bir Elastik Beanstalk yük dengeleyicisinin arkasındaki EC2 örneklerinin yükseltilen 2019 sertifikasına otomatik olarak güvenip güvenmeyeceğiydi. Onlara SSH'ing yoluyla veya örneğin kullanarak manuel olarak güvenmem gerekip gerekmediğinden emin değildim .ebextensions. Onu test sonra Sonunda, onlar teyit edebilir mi otomatik olarak yeni RDS bağlantısını güven. RDS DB örneği burada açıklandığı gibi EB ortamından ayrıştırıldıysa https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html, sonuçtan emin değilim.
stwr667

Yanıtlar:


8

Adım 1 ve 2 yalnızca MySQL ile uygulama bağlantınız TLS şifreli ise gereklidir .

LB TLS ayarını değiştirmeyin , uygulamanızı bozabilir, LB TLS başka bir şeydir, RDS TLS başka bir şeydir.

Uygulamanız sadece düz bağlantı oluşturuyorsa, doğrudan 3. adımı uygulayabilirsiniz.

CA'yı rds-ca-2015'ten rds-ca-2019'a değiştirmek için DB örneğini değiştirin.

Normalde DB için pratik, DB özel alt ağda olmalı ve halka açık olmamalıdır, TLS, VPC içinde değil, Veritabanı ve Arka Uç bağlantınız internette olduğunda faydalıdır.

MySQL istemcisi ile sunucu arasında şifrelenmemiş bir bağlantıyla, ağa erişimi olan biri tüm trafiğinizi izleyebilir ve istemci ile sunucu arasında gönderilen veya alınan verileri kontrol edebilir.


Teşekkürler @Adiii. Emin misiniz? Burada docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… , DB bağlantınızın SSL kullanıp kullanmadığını nasıl anlayacağınızı açıklar. Sunucuma geldiğimde eb ssh, oradan DB'ye bağlanın psqlve sonra çalıştırın select ssl_is_used(), true döndürür! RDS örneğim , burada açıklandığı gibi EB ortamımla bağlantılı . Docs.aws.amazon.com/elasticbeanstalk/latest/dg/… . EB, RDS'ye otomatik olarak bağlandığından, CA'yı değiştirmenin oluşturulan bağlantıyı keseceğinden endişe duyuyorum.
stwr667

Genel olarak konuşuyorum, nasıl bağlantı oluşturmak için uygulamaya bağlıdır ama bağlantı palin bağlantısı tarafından önerilen kod. 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
Teşekkürler @Adii. Fyi MySQL değil Postgres kullanıyorum.İyi haber şu an bir anlık görüntü aldım ve sadece şimdi 3. adımı denedim. Her şey beklendiği gibi çalışıyor. Uygulama sunucusundan DB'ye yeniden bağlanırken bile, yine de SSL kullandığını bildiriyor, bu yüzden RDS örneği EB ortamına bağlandığında ElastikBeanstalk'ın sertifikanın güvenilirliğini otomatik olarak ele aldığını varsayıyorum. Tekrar teşekkürler.
stwr667

Peki bağlantı nasıl oluşturulur? Bağlantı dizesinde SSL belirtildi mi?
Adiii

Bağlantı bilgileri tanımlanır yüzden, Rails uygulaması var database.ymlgibi ENV değişkenlere sesleniyor hangi RDS_DB_NAME, RDS_USERNAMEvb (hatta elinden gerçi) SSL orada gerektirecek belirtmez. Bence rağmen EB üzerinde varsayılan ayar gibi bir şey olmalı allow, preferya da require, bir ortam değişkeni ya da bir şey aracılığıyla yapılandırılır. cf: postgresql.org/docs/current/… . Kesinlikle diğer 3'ten biri değil çünkü disableSSL'yi kapatır ve verifyCLI'de test ettiğimde diğer seçenekler başarısız oldu.
stwr667

2

Sorunun çok daha kolay bir cevabı var:

Ekli RDS tarafından kullanılan CA Sertifikasını yükseltirseniz, Beanstalk ortamınıza herhangi bir şey yüklemenize gerek yoktur. https://stackoverflow.com/a/59742149/7051819

3. noktayı takip edin ve 1 ve 2'yi dikkate almayın.

(Evet, bu yanıtı kendim yazdım).


3
Ben atlama cevap aşağı oy olduğunu düşünüyorum çünkü çoğu üretim ortamları elastik fasulye sapı içinde RDS KULLANMAYIN. elastik fasulye sapından RDS kullanmak potansiyel olarak tehlikelidir çünkü elastik fasulye sapı örneğinizi sonlandırırsanız, veritabanınız da sonlandırılır, bu da veri saklama amaçları için iyi değildir. Yani genel olarak insanlar RDS örneğinin ayrı olduğu elastik fasulye soyu ortamlarını soruyorlar.
jakeatwork
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.