はじめに

2023/08末頃、Amazon Web ServiceよりSSL/TLS CA 証明書(rds-ca-2019)を利用するAmazon RDSのデータベースに対してアクションを実行してくださいと通知されました。
今回はAWS CloudShell / AWS CLIによる更新対応方法について確認していきます。

対応方法

適切な権限を持ったIAMユーザーにてAWS Management Consoleへログイン後、対象のリージョンでAWS CloudShellを起動します。

または適切な権限を持ったIAMユーザーのアクセスキー ID とシークレットアクセスキーを利用できるようaws configureしたAWS CLIを利用できるターミナル環境を準備します。

その後Amazon RDSのデータベースを一覧として表示するために以下コマンドを実行します。

 $ aws rds describe-db-instances --query "DBInstances[].[{Name:DBInstanceIdentifier Engine:Engine EngineVersion:EngineVersion}]" --output table 

次に、EngineをMySQLで絞り以下コマンドを実行し再起動の有無を確認します。

 $ aws rds describe-db-engine-versions --engine mysql --query "DBEngineVersions[].{Engine:Engine EngineVersion:EngineVersion SupportsCertificateRotation:SupportsCertificateRotationWithoutRestart}" --output table 
・実行結果例

今回は再起動の発生しないrds-ca-2019-test03の認証機関(CA)について更新を行います。

以下コマンドで、現在利用中の認証機関(CA)がrds-ca-2019であることを確認します。

aws rds describe-db-instances --db-instance-identifier rds-ca-2019-test03 --query "DBInstances[].CertificateDetails.{CAIdentifer:CAIdentifier ValidTill:ValidTill}" --output table

その後以下コマンドを実行し、認証機関(CA)をrds-ca-rsa4096-g1へ変更します。

aws rds modify-db-instance --db-instance-identifier rds-ca-2019-test03 --ca-certificate-identifier rds-ca-rsa4096-g1 --apply-immediately --query "DBInstance.PendingModifiedValues"

数分待ったあと、以下コマンドを実行し認証機関(CA)がrds-ca-rsa4096-g1に変更されていることを確認します。

aws rds describe-db-instances --db-instance-identifier rds-ca-2019-test03 --query "DBInstances[].CertificateDetails.{CAIdentifer:CAIdentifier ValidTill:ValidTill}" --output table
・実行結果例

終わりに

今回は再起動の発生しないデータベースを対象とした、AWS CloudShell / AWS CLIによるSSL/TLS CA 証明書の更新を行いました。

Amazon RDS for MySQLの場合、証明書はrds-ca-rsa4096-g1以外にもrds-ca-rsa2048-g1とrds-ca-ecc384-g1を利用できますが、rds-ca-rsa4096-g1とrds-ca-ecc384-g1はrds-ca-2019で利用されていた秘密鍵のアルゴリズムと異なります。

クライアントやアプリケーション等で非対応となっている可能性もあるため、SSL/TLS接続を利用されている場合は対応しているかどうか必ず事前調査を行いましょう。

また、rds-ca-2019と同等のアルゴリズム(RSA2048)を利用されたい場合は、rds-ca-rsa2048-g1に変更することを推奨します。