Amazon RDS SSL / TLS証明書を更新する-Elastic Beanstalk


14

AWSは最近、次の必要性を発表しました。

2019年10月31日までにAmazon RDS SSL / TLS証明書を更新してください

RDSを使用してPostgres DBに接続する従来のElastic BeanstalkロードバランサーでホストされているRailsアプリケーションがあります。

Amazonによる必要な手順は次のとおりです。

  1. SSL / TLSを使用したDBインスタンスへの接続の暗号化から新しいSSL / TLS証明書をダウンロードします。
  2. 新しいSSL / TLS証明書を使用するようにデータベースアプリケーションを更新します。
  3. DBインスタンスを変更して、CAをrds-ca-2015からrds-ca-2019に変更します。

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

ロードバランサーをこのように設定しているため(SSLではなくHTTPポート80を介してEC2インスタンスに接続しています)、これはステップ1と2を実行する必要がなく、ステップ3のみを実行する必要があることを意味しますか?

LoadBalancerListeners

または、更新された証明書をダウンロードして、手動でロードバランサーまたはECインスタンスにインストール/追加する必要がありますか?それを行う方法がわかりません。


1
最後に何をしなければなりませんでしたか?私は最終的な解決策が何であったか明確ではありません。
ウェーバー、

3
@weber、決定する必要がある主なことは、RDS接続が関連付けられているElastic Beanstalkロードバランサーの背後にあるEC2インスタンスが、アップグレードされた2019証明書を自動的に信頼するかどうかでした。SSHを使用して手動で信頼する必要があるかどうか、またはを使用する必要があるかどうかはわかりませんでした.ebextensions。それをテストした後、最後に、私は彼らがいることを確認できなかった自動的に新しいRDS接続を信頼しています。ここhttps://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.RDS.htmlで説明されているようにRDS DBインスタンスがEB環境から切り離されていた場合、結果はよくわかりません。
stwr667

回答:


8

手順1および2 は、MySQLとのアプリケーション接続がTLS暗号化されている場合にのみ必要です。

LB TLSを変更しないでください、それはあなたのアプリケーションを破ることができます設定、LB TLSは何か他のものであり、RDS TLSは何か他のものです。

アプリケーションが単純な接続を作成するだけであれば、ステップ3を直接実行しても安全です。

DBインスタンスを変更して、CAをrds-ca-2015からrds-ca-2019に変更します。

通常、DBの実践では、DBはプライベートサブネット内にあり、パブリックからはアクセスできません。TLSは、データベースとバックエンドの接続がVPC内ではなくインターネット上にある場合に役立ちます。

MySQLクライアントとサーバー間の暗号化されていない接続により、ネットワークにアクセスできる誰かがすべてのトラフィックを監視し、クライアントとサーバー間で送受信されるデータを検査できます。


@Adiiiに感謝します。本気ですか?ここにdocs.aws.amazon.com/AmazonRDS/latest/UserGuide/…それは、DB接続がSSLを使用しているかどうかを確認する方法を説明しています。私ときeb ssh私のサーバーへ、そこからDB経由に接続しpsql、その後、実行しselect ssl_is_used()、それはtrueを返します!私のRDSインスタンスは、docs.aws.amazon.com/elasticbeanstalk/latest/dg/…で説明されているように、EB環境に関連付けられています。EBはRDSに自動接続されるため、上記に基づいて、CAを変更すると生成された接続が切断されるのではないかと心配しています。
stwr667

私は一般に話している、それはそれが接続をどのように作成するかというアプリケーションに依存するが、リンクをリンクすることによって提案されるコードはpalin接続である。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
@Adiiに感謝します。MySQLではなくPostgresを使用しています。良いニュースは、スナップショットを撮って、今すぐステップ3を試してみたことです。すべてがまだ期待どおりに機能します。アプリケーションサーバーからDBに再接続する場合でも、SSLを使用しているとレポートされるため、RDSインスタンスがEB環境に関連付けられている場合、ElasticBeanstalkが証明書の信頼を自動的に処理すると想定します。再度、感謝します。
stwr667

では、どのように接続を作成しますか?接続文字列にSSLを指定しましたか?
Adiii

私はRailsアプリを持っているので、などのdatabase.ymlENV変数を呼び出す接続情報が定義されています。SSLを要求するように指定していません(可能な場合でも)。私は思うが、EBのデフォルト設定は次のようなものでなければならない、または、環境変数か何かを介して設定します。cf:postgresql.org/docs/current/…。SSLをオフにするので、他の3つのオプションの1つではなく、他のオプションはCLIでテストしたときに失敗しました。RDS_DB_NAMERDS_USERNAMEallowpreferrequiredisableverify
stwr667

2

質問にははるかに簡単な答えがあります:

接続されているRDSで使用されるCA証明書をアップグレードする場合は、Beanstalk環境に何もインストールする必要はありません。 https://stackoverflow.com/a/59742149/7051819

ポイント3に従って、1と2は無視してください。

(はい、私は自分でその答えを書きました)。


3
ほとんどの本番環境ではElastic Beanstalk内でRDSを使用していないため、ジャンプの答えは反対票だと思います。Elastic Beanstalk内からRDSを使用すると、Elastic Beanstalkインスタンスを終了するとデータベースも終了するため、データの保持に適さないため、潜在的に危険です。したがって、一般的に人々はRDSインスタンスが分離されているエラスティックbeanstalk環境について質問しています。
jakeatwork
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.