Amazon RDS SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新

2019年12月18日システムAWS

Amazon RDS SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新
Amazon RDS SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新

AWSのRDSで2020年2月5日までに SSL/TLS証明書の更新 を行うよう通知が来ました。

Amazon RDS SSL/TLS証明書をrds-ca-2015からrds-ca-2019への更新作業を行ったので手順等を共有します。ぜひご覧ください。

RDSメンテナンス対応の手順は RDSのメンテナンスがスケジューリングされた時にやった手順【ダウンタイムを気にする場合など】 にまとめたのでぜひご覧ください。

AWS RDSのSSL/TLS証明書の更新とは

AWSのRDSでは、SSL/TLSを使用してRDSのDBインスタンスへ接続を行っています。そして2020年2月5日までに新しい認証機関(CA)の証明書が発行されたので、更新する必要があります。

2020年2月5日までに更新しない場合は、AWS側が設定しているRDSのメンテナンススケジュールにより自動で更新されます。なので、更新作業を忘れていても大丈夫です。が、証明書の更新により強制的に再起動されるので、サービス運営している場合は、サービスがダウンしてしまう為、事前に更新することをオススメします。

AWSからRDSのSSL/TLS証明書の更新通知メールが届く

AWSより2019年11月29日0時26分頃に以下のようなメールが届きました。

メールの文面をざっくり抜き出すと以下のような内容になります。

  • Amazon RDS SSL/TLS証明書の更新が必要
    • 更新は2020年2月5日までに行う
    • 期限を過ぎると登録されているスケジュール通りに自動で更新処理が開始される
    • 2020年1月14日以降に作成されたRDS DB インスタンスには新しい証明書が使用される
  • アプリケーションが SSL/TLS プロトコルを使用して RDS DB インスタンスに接続している場合は、別途手順が必要
    • クライアントアプリケーションはCA証明書を必ずトラストストアに追加

MySQLなどのクライアントアプリケーションを利用してRDSのDBインスタンスへ接続する際に、SSL/TLSで接続している場合は、別途トラストストアへCA証明書を追加する作業が必要みたいです。

RDSのSSL/TLS更新に関する詳しい内容については、AWSのドキュメントに記載されています。

2020 年 2 月 5 日までに Amazon RDS SSL/TLS 証明書を更新してください

2020 年 2 月 5 日までに Amazon RDS SSL/TLS 証明書を更新してください
2020 年 2 月 5 日までに Amazon RDS SSL/TLS 証明書を更新してください

AWSのマネージメントコンソールで、RDSダッシュボードを開きます。すると、左メニューに「Certificate update」という項目にバッチが付いていると思います。

Certificate updateを開くと以下のメッセージが表示されています。

2020 年 2 月 5 日までに Amazon RDS SSL/TLS 証明書を更新してください

RDS および Aurora データベースを使用するアプリケーションの中断を避けるため、これらのデータベースの認証機関 (CA、Certificate Authority) 証明書を 2020 年 2 月 5 日までに更新してください。
2020 年 1 月 14 日以降に作成された新しいデータベースでは、デフォルトで新しい CA 証明書が使用されます。
まず、新しい証明書を使用してクライアントアプリケーションを更新してください。

そして更新が必要なデータベースに対象のDBインスタンスが表示されていると思います。

Amazon RDS SSL/TLS 証明書の更新する前に

Amazon RDS SSL/TLS 証明書の更新する前に
Amazon RDS SSL/TLS 証明書の更新する前に

Amazon RDS SSL/TLS 証明書の更新作業に入る前に、RDS(Amazon Relational Database Service)の概要について軽く触れておきます。
AWS再入門 Amazon RDS編

Amazon Aurora DB クラスター

Amazon Aurora DB クラスターは、1 つ以上の DB インスタンスとデータを管理する 1 つのクラスターボリュームで構成されます。

基本構成としては、クラスター配下にマスタ(書き込み用)とリードレプリカ(読み込み用)を用意しておくことが多いと思います。

レプリケーション

DBインスタンスをマスタ(書き込み用)とリードレプリカ(読み込み用)で用意し、データを同期させる構成がレプリケーションです。

フェイルオーバー

マスタ(書き込み用)のDBインスタンスに障害が発生すると、フェイルオーバーすることで他のリードレプリカ(読み込み用)のDBインスタンスがマスタ(書き込み用)へ昇格します。

Amazon RDS SSL/TLS 証明書の更新する手順

 Amazon RDS SSL/TLS 証明書の更新する手順
Amazon RDS SSL/TLS 証明書の更新する手順

RDSのSSL/TLSの証明書更新を行うと、DBインスタンスが再起動されます。その為にサービスを運営しているとダウンタイムが発生します。なので、更新手順をしっかりと把握しダウンタイムを短い時間で行う必要があります。

運営サービスのダウンタイムを気にしない場合

RDSのSSL/TLS証明書の更新による再起動でダウンタイムを特に気にしない場合は、簡単にRDSのマネージメントコンソールから証明書を更新できます。

作業すること
RDSのマネージメントコンソールより対象のDBインスタンスを選択し、rds-ca-2015からrds-ca-2019へ変更を行う。

SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する

RDSのSSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する手順を紹介します。

まずはRDSのマネージメントコンソールを開きます。

 SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する
SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する

SSL/TLS証明書を更新するDBインスタンスを選択して、[変更]ボタンを押下します。

SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する
SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する

ネットワーク&セキュリティにある証明機関をrds-ca-2015をrds-ca-2019へ変更します。

 SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する
SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する

rds-ca-2015からrds-ca-2019へ切り替えると以下の様なメッセージが表示されます。

Before scheduling the CA certificate rotation, update client applications that connect to your database to use the new CA certificate. Not doing this will cause an interruption of connectivity between your applications and your database. Get new CA certificates.

CA証明書のローテーションをスケジュールする前に、データベースに接続するクライアントアプリケーションを更新して、新しいCA証明書を使用します。これを行わないと、アプリケーションとデータベース間の接続が中断されます。新しいCA証明書を取得します。

画面下部にある[次へ]ボタンを押下します。

SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する
SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する

変更のスケジュールを[すぐに適用]を行います。

※もし夜中などに自動で再起動して適用する場合は[次に予定されるメンテナンスウィンドウ中に適用します]で問題ありません。

そしてDBインスタンスの[変更]ボタンを押下します。するとDBインスタンスが再起動されSSL/TLS証明書が更新されます。

既にAWS側が自動でメンテナンスウィンドウへスケジュール登録されていることがあります。そのため同一の変更がすでにスケジュール登録されているというアラートが表示されます。すぐに適用する場合は、気にせずにDBインスタンスの変更をもう一度押下すると実行することが出来ます。

運営サービスのダウンタイムを気にする場合

RDSのSSL/TLS証明書の更新による再起動でダウンタイムを短くする必要がある場合は、事前に準備をしておく必要があります。

作業メモ
クラスターを使用して、レプリケーションしているDBインスタンスをフェイルオーバーで切り替えます。
作業すること
クラスターへリードレプリカを追加してリードレプリカのDBインスタンスの証明書をrds-ca-2015からrds-ca-2019へ更新。そしてクラスターに紐づいている追加したリードレプリカではないDBインスタンスを選択し、フェイルオーバーを行う。そしてリードレプリカを書き込みへ切り替える。

リードレプリカをクラスタへ追加する

RDSのSSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する際に、ダウンタイムを減らすようリードレプリカを追加し、フェイルオーバーする手順を紹介します。

まずはRDSのマネージメントコンソールを開きます。

リードレプリカをクラスタへ追加する
リードレプリカをクラスタへ追加する

クラスターを選択し、[アクション]の[リーダーの追加]を行いリードレプリカをクラスタへ追加します。

SSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新する

そして追加したリードレプリカのSSL/TLS証明書をrds-ca-2015からrds-ca-2019へ更新します。
※さきごど手順を紹介したので、ここでは割愛します。

マスタ(書き込み)のDBインスタンスをフェイルオーバーする

マスタ(書き込み)のDBインスタンスをフェイルオーバーする
マスタ(書き込み)のDBインスタンスをフェイルオーバーする

RDSのマネージメントコンソールを開きます。そして先ほどリードレプリカを追加したクラスタに紐づいているマスタ(書き込み)となっているDBインスタンスを選択します。

[アクション]の[フェイルオーバー]を選択します。こうしてフェイルオーバーを手動で行います。すると数秒するとリードレプリカがマスタへ昇格を行います。

あとはリードレプリカとなったDBインスタンスを削除して作業終了となります。

フェイルオーバーでの再起動などのダウンタイムについて

AWSのよくある質問ページに数十秒でフェイルオーバーは完了すると記載があります。

Amazon Aurora レプリカを同一の、または異なるアベイラビリティーゾーンに作成しておくと、フェイルオーバーが発生した場合、Aurora は DB インスタンスの正規名レコード (CNAME) を切り替えて正常なレプリカを指定します。指定されたレプリカはこれにより新しいプライマリに昇格します。フェイルオーバーは開始から終了まで通常 30 秒以内に完了します。

https://aws.amazon.com/jp/rds/aurora/faqs/

参考サイト

今回この記事にある更新手順の「フェイルオーバーを起こしてマスタ(書き込み用)とリードレプリカ(読み込み用)の交代を行い更新を行いフェイルオーバー中のダウンタイムは許容」する方法を参考にしました。
AWS Aurora の SSL/TLS 接続用 CA 証明書を更新した話

RDSの更新方法で考えられる方法についてまとめられた記事です。画像付きで説明されているのでわかりやすかったです。
Amazon AuroraのDB インスタンスクラス変更方法まとめ

Amazon RDS SSL/TLS 証明書の更新によるダウンタイム

実際に RDSのSSL/TLS証明書の更新とフェイルオーバーによるリードレプリカの切り替えを行いました。その際のダウンタイムについて記載しておくので作業する際の目安にご覧ください。

  • SSL/TLS証明書の更新
    • 15秒程度
  • フェイルオーバーによるリードレプリカの切り替え
    • 30秒程度

またDBインスタンスのデータ量によって時間が変動するかと予想していましたが、あまり関係はしないようです。それよりアベイラビリティゾーンなどの構成によって大きく変動するそうです。

あわせて読んでほしい

AWSからRDSのメンテナンス通知で「RDSメンテナンス」のお知らせが届きました。それに伴いRDSでメンテナンス作業を行いました。画面スクショで手順をまとめたので紹介します。

プログラミングスクール受講メリット

・メンターにすぐ聞けるので分からないところでつまづかない
・受講生同士で学び合いモチベーション維持しやすい
・就学後に就職支援や進路サポートを受けることが出来る

ユート
ユート

Webプログラマ兼ブロガー | プログラミング基礎知識を発信|Webプログラマ歴は10年以上|JavaScript,PHP.HTML | 「人生の時間は有限。悪いことをしている時間はない」
プロフィール

2019年12月18日システムAWS

Posted by ユート