初めまして。植松です。

AWSにまつわるTipsを不定期で書いていこうと思います。

1回目は最近よく通知が来るRDSの証明書アップデートについて。

アプリケーションが SSL/TLS プロトコルを使用してこれらのインスタンスに接続する場合、既存のデータベースインスタンスへの接続障害を防ぐために、2024 年 8 月 22 日までにアクションを実行する必要があります。現在接続に SSL を使用していない場合でも、データベースサーバー証明書の有効期限が切れると影響を受ける可能性があるため、CA を更新することをお勧めします。

メールにはこのような記載があるので、運用中のアプリケーションとRDS(MySQL)間がSSL/TLSで繋がっているかを確認する方法をいくつか記載します。

1)パラメータグループの確認

RDSのパラメータグループを確認します。

require_secure_transport=1 となっている場合、RDSへの接続にSSL/TLSが強制されていますので、証明書のアップデートが必要です。

2)コマンドラインからDBにログインして確認

以下のコマンドでログインができた場合、SSL/TLSを使わずにアクセスができています。

$ mysql -h myinstance.123456789012.rds-us-east-1.amazonaws.com -u testuser -p

※SSL/TLSが必要な場合は以下のようなコマンドになります。

$ mysql -h myinstance.123456789012.rds-us-east-1.amazonaws.com -u testuser -p --ssl-ca=[full path]global-bundle.pem --ssl-mode=VERIFY_IDENTITY

そして、DBへログイン後以下のクエリを実行することで、暗号化通信を利用しているか確認できます。

mysql> SHOW STATUS LIKE 'Ssl_cipher';

暗号化通信を利用している場合、valueに暗号スイートが表示されます。

+---------------+------------------------+
| Variable_name | Value                  |
+---------------+------------------------+
| Ssl_cipher    | TLS_AES_256_GCM_SHA384 |
+---------------+------------------------+

上記例だと、暗号スイートが表示されているので、何かしらのアプリケーションでSSL/TLSを使っていることになります。
そのため、証明書のアップデートが必要です。
(valueに何も表示されなければ、証明書のアップデートは不要)

また、Amazon RDS for MySQLバージョン5.7または8.0を使用、かつ、Performance Schemaが有効になっている場合、次のクエリを実行することで、SSL/TLSが使用されているかどうかを確認できます。

mysql> SELECT id, user, host, connection_type 
       FROM performance_schema.threads pst 
       INNER JOIN information_schema.processlist isp 
     ON pst.processlist_id = isp.id;

出力例では、adminとwebapp1ユーザーがSSL/TLSを使っていることがわかります。

+----+-----------------+------------------+-----------------+
| id | user            | host             | connection_type |
+----+-----------------+------------------+-----------------+
|  8 | admin           | 10.0.4.249:42590 | SSL/TLS         |
|  4 | event_scheduler | localhost        | NULL            |
| 10 | webapp1         | 159.28.1.1:42189 | SSL/TLS         |
+----+-----------------+------------------+-----------------+

証明書のアップデートが必要な場合

どのアプリケーションがSSL/TLSを使っているかを設定ファイルなどで確認します。
その後、アプリケーションで使用している証明書をアップデートし、RDSの証明書をアップデートする流れになります。
詳しい方法は公式サイトをご確認ください。
RDSに設定する証明書の種類は複数あるので、利用するアプリケーションによって選択してください。
証明書バンドルの一覧はこちらから確認、DLできます。

証明書のアップデートが不要な場合

特に対応は不要です。過去の証明書アップデートの時は、自動的に別の証明書にRDSの設定が変わったので、今回も自動的に変わると思われます。

さいごに

今回の証明書アップデートによって、証明書の期限が40年とだいぶ長くなります。(rds-ca-rsa2048-g1の場合。rds-ca-ecc384-g1とrds-ca-rsa4096-g1はなんと100年w)
なので、今回の作業が終わればほぼ遭遇することがないのかなと思います。