Amazon RDS で100年有効な新しいCAが利用可能になりました

RDSのセキュアなDB通信に利用する 認証局(CA)として、長い有効期限のCAが利用可能になりました。
2023.01.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon RDS で、セキュアなDB通信を行う際 に利用する認証局 (CA) として、 有効期限が40年弱(rds-ca-rsa2048-g1)、100年弱(rds-ca-rsa4096-g1, rds-ca-ecc384-g1) のCAが、2023年1月13日のアップデートで利用可能になりました。

今回、利用可能となった新しいCAを試す機会がありましたので、紹介させていただきます。

設定

RDS

DBエンジンバージョンは「MySQL 8.0.28」を利用しました。

認証機関として rds-ca-2019 (デフォルト) 以外の選択が可能になりました。

  • rds-ca-2019 (デフォルト)
  • rds-ca-ecc384-g1
  • rds-ca-rsa4096-g1
  • rds-ca-rsa2048-g1

認証機関として「rds-ca-rsa4096-g1」を設定しました。

疎通確認

クライアント

Amazon Linux 2 の EC2インスタンスで mariadb-5.5のパッケージを利用しました。

$ rpm -qf /usr/bin/mysql
mariadb-5.5.68-1.amzn2.x86_64

証明書バンドルは、すべての AWS リージョンの中間証明書とルート証明書の両方を含む 「global-bundle.pem」 を 公式サイトよりダウンロードして利用しました。

wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem

疎通結果

DBHOST='###.###.ap-northeast-1.rds.amazonaws.com'
echo "\s" |  mysql -h ${DBHOST} -P 3306 -u admin  --ssl-ca=global-bundle.pem --ssl -p

TLSv1.2 (ECDHE-RSA-AES256-GCM-SHA384) での接続が確認できました。

--------------
mysql  Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64) using readline 5.1

Connection id:          71
Current database:
Current user:           admin@##.##.##.##
SSL:                    Cipher in use is ECDHE-RSA-AES256-GCM-SHA384
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server:                 MySQL
Server version:         8.0.28 Source distribution
Protocol version:       10
Connection:             ##.##.ap-northeast-1.rds.amazonaws.com via TCP/IP
Server characterset:    utf8mb4
Db     characterset:    utf8mb4
Client characterset:    utf8mb3
Conn.  characterset:    utf8mb3
TCP port:               3306
Uptime:                 1 hour 49 min 54 sec

Threads: 3  Questions: 13962  Slow queries: 0  Opens: 284  Flush tables: 3  Open tables: 178  Queries per second avg: 2.117
--------------

失効日

2023年1月時点のCA毎の有効期限は以下の通りでした。

認証機関情報 証明機関の日付 DB instance certificate expiration date
rds-ca-2019 2024-08-23 2024-08-23
rds-ca-rsa2048-g1 2061-05-26 2026-01-14
rds-ca-ecc384-g1 2121-05-26 2026-01-14
rds-ca-rsa4096-g1 2121-05-26 2026-01-14

今回のアップデートで追加されたCAを利用するDBサーバの証明書については、2026年の有効期限が切れる前に自動ローテーションで利用出来るとされています。

When you use the rds-ca-rsa2048-g1, rds-ca-rsa4096-g1, or rds-ca-ecc384-g1 CA with a DB instance, RDS manages the server certificate on the DB instance. RDS rotates it automatically before it expires. These CA certificates are included in the regional and global certificate bundle. Using SSL/TLS to encrypt a connection to a DB instance

まとめ

RDS を セキュアなDB 通信で 利用するワークロードでは、これまで5年毎にサーバー(RDS)と クライアントの双方で、SSL/TLS 証明書のメンテナンスが必要でした。

今回追加されたCAを利用するRDSでは サーバー側の証明書は、40/100年間は自動更新で利用することが可能になります。新規にRDSインスタンスを作成される場合、新しい認証局をご活用ください。

従来の「rds-ca-2019」を認証局としている 既存のRDSインスタンスも、メンテナンスウィンドウを利用する事で新しい認証局を利用可能です。 セキュアなDB通信を利用している場合、クライアント側で利用する証明書バンドルの更新が必須となります。 「rds-ca-2019」の執行日 2024年8月までは1年半の猶予がありますが、早めに移行の準備、評価に取り掛かる事をお勧めします。

また、従来より高いセキュリティ強度のCA (RSA4096、ecc384)を長い有効期限で利用可能になりましたが、クライアント側の対応や負荷影響について、検証環境などで十分に確認してからご利用ください。

デジタル庁「暗号強度要件(アルゴリズム及び鍵長選択)に関する設定基準」 (初版:2022年(令和4年)6月、CRYPTREC LS-0003-2022) 署名及びメッセージ認証におけるセキュリティ強度要件