タダです.
RDS および Aurora で使用している SSL/TLS 証明書が rds-ca-2015
を使っている場合は 3/5までにrds-ca-2019
に切り替える必要があります.今回は AWS CLI で RDS の証明書を切り替える検証を行なったので同様の対応を検討している方の参考になれば嬉しいです.
sadayoshi-tada.hatenablog.com
証明書の切り替えで使うコマンドについて
証明書を切り替えるために使ったコマンドは以下のコマンドです.
describe-db-instances
describe-pending-maintenance-actions
modify-db-instance
コマンドの利用詳細
それぞれのコマンドの利用の詳細を順番で書きます.
1, describe-db-instances
で rds-ca-2015
のインスタンスを確認します.
aws rds describe-db-instances --query 'DBInstances[?CACertificateIdentifier==`rds-ca-2015`].{Name:DBInstanceIdentifier}' --output table --------------------- |DescribeDBInstances| +-------------------+ | Name | +-------------------+ | database-1 | +-------------------+
2, describe-pending-maintenance-actions
で保留中のメンテナンスの有無を確認します.
aws rds describe-pending-maintenance-actions { "PendingMaintenanceActions": [ { "ResourceIdentifier": "arn:aws:rds:ap-northeast-1:XXXXXXXX:db:database-1", "PendingMaintenanceActionDetails": [ { "Action": "ca-certificate-rotation", "AutoAppliedAfterDate": "2020-02-04T22:03:06Z", "CurrentApplyDate": "2020-02-04T22:03:06Z", "Description": "Rotation of CA certificate" } ] } ] }
AWS のブログによると 2/5~3/5 に証明書が切り替わって再起動すれば証明書が有効な状態になります.上記の保留中のメンテナンスはこの証明書切り替えのメンテンスとなります.このメンテナンスが表示されているうちは証明書切り替えが完了していないことになります.
RDS、Aurora、DocumentDB 用の SSL/TLS 証明書が失効し、メンテナンスおよびセキュリティ管理に関する当社の標準規律に則った 5 年に 1 度の置き換えが行われます。それに関して、重要なスケジュールを次に明記しておきます。
2019 年 9 月 19 日 ー CA-2019 証明書が利用可能になりました。
2020 年 1 月 14 日 ー この日以降、作成されるインスタンスは、新しい証明書 (CA-2019) を使用するようになります。必要性がある場合は、一時的に古い証明書に戻すこともできます。
2020 年 2 月 5 日~3 月 5 日 ー RDS において、既存インスタンスに対する新しい証明書の (インストールのみで有効化はしない) ステージングが行われます。インスタンスを再起動することで、この証明書が有効化されます。
2020 年 3 月 5 日 ー CA-2015 が失効します。証明書の検証を使用しているアプリケーションで更新を行っていないものは、接続ができなくなります。
3, modify-db-instance
で証明書を切り替える
いよいよ証明書を切り替えます.SSL 接続を行う場合はインスタンスやクラスターの再起動が発生しますが,SSL 接続を行なっていない場合は再起動不要な AWS CLI オプション --no-certificate-rotation-restart
もあるので,AWS のブログで紹介されたコマンドを試してみました.コマンドを実行後に describe-pending-maintenance-actions
で確認したらまだ保留中のメンテナンスが残っています.つまり,rds-ca-2019
への変更が保留中となっている状態になっていてまだ証明書の切り替えは完了していない状態と言えます.
aws rds modify-db-instance --db-instance-identifier database-1 --ca-certificate-identifier rds-ca-2019 --no-certificate-rotation-restart { "DBInstance": { "DBInstanceIdentifier": "database-1", "DBInstanceClass": "db.t2.micro", "Engine": "mysql", "DBInstanceStatus": "available", ~中略~ "PreferredMaintenanceWindow": "thu:15:50-thu:16:20", "PendingModifiedValues": { "CACertificateIdentifier": "rds-ca-2019" }, ~中略~ "CACertificateIdentifier": "rds-ca-2015", ~中略~ } } aws rds describe-pending-maintenance-actions { "PendingMaintenanceActions": [ { "ResourceIdentifier": "arn:aws:rds:ap-northeast-1:XXXXXXXX:db:database-1", "PendingMaintenanceActionDetails": [ { "Action": "ca-certificate-rotation", "AutoAppliedAfterDate": "2020-02-04T22:03:06Z", "CurrentApplyDate": "2020-02-04T22:03:06Z", "Description": "Rotation of CA certificate" } ] } ] }
GUI で証明書を切り替えを行う場合もこの変更をすぐに適用するか,メンテナンスウィンドウで適用かを指定しています.そのため, 変更をすぐに適用する --apply-immediately
オプションを指定して再度実行しました.describe-pending-maintenance-actions
で再度確認したら保留中のメンテナンスの表示が消えたので証明書切り替え完了です.
aws rds modify-db-instance --db-instance-identifier database-1 \ --ca-certificate-identifier rds-ca-2019 --no-certificate-rotation-restart --apply-immediately { "DBInstance": { "DBInstanceIdentifier": "database-1", "DBInstanceClass": "db.t2.micro", "Engine": "mysql", "DBInstanceStatus": "available", ~中略~ "PreferredMaintenanceWindow": "thu:15:50-thu:16:20", "PendingModifiedValues": { "CACertificateIdentifier": "rds-ca-2019" }, ~中略~ "CACertificateIdentifier": "rds-ca-2015", ~中略~ } } aws rds describe-pending-maintenance-actions { "PendingMaintenanceActions": [] }
念のため GUI でも確認しても証明書が rds-ca-2019
に切り替わっていることが確認できました.
まとめ
CA 証明書切り替えを AWS CLI で動作を確認したのでその内容をまとめました.--no-certificate-rotation-restart
オプションを使うまでこのオプションを使えば証明書が切り替わっていると勘違いしていたので確認ができてよかったです.改めて検証の大切さを感じました.