こんにちは!eyeon運用チームです。
AWSさんから、RDSのSSL/TLS証明書の期限が切れるよーってメール通知が届いていたので確認してみました。証明書の更新作業が必要っぽいのでその手順もご案内しておきます。
1.いきなり結論
結論としては以下の通りですね。
放置しておくと、RDSのメンテナンスウィンドウにて勝手に証明書が更新されちゃいます。
それだけ聞くと、SSL/TLS接続を利用していない場合は気にしなくてよさそうです。
ですが!!!RDSのエンジン、エンジンバージョンによってはそのタイミングでDBインスタンスが再起動してしまいます。
従い、都合が良いときに、早めに手動で更新しておきましょう!
逆に、SSL/TLS接続を利用していない、かつ再起動対象外のエンジン、エンジンバージョンを利用していない場合は何もしなくても大丈夫です。詳細は後述いたします。
(ただ、いつのまにか自動更新されてしまうので、手動で更新しておいたほうが無難ではあります。)
- RDSにSSL/TLS接続している場合の証明書が期限切れとなるよ(2024年8月22日)
(現行の「rds-ca-2019」が廃止。次は「rds-ca-rsa2048-g1」) - アプリケーションからの接続にSSL/TLS証明書を利用している場合は、アプリケーションで利用している証明書を更新しましょう。
- その後に、RDSコンソールにて証明書を更新しましょう
(お使いのエンジンバージョンによってはRDSの再起動が発生)。 - SSL/TLS接続を利用してないなら影響しないよ。
(でも、ほっとくとメンテナンスが自動実行されてRDSインスタンスが再起動してしまうかも)
2.AWSさんからのメール通知の内容は?
以下の内容で届いていました。
・ 送信元: Amazon Web Services, Inc. no-reply-aws@amazon.com
・ 件名:(長いです)
[アクションが必要] 2024 年 8 月 22 日までに Amazon RDS および Amazon Aurora SSL/TLS 証明書を更新してください | [Action required] Update Your Amazon RDS and Amazon Aurora SSL/TLS Certificates by August 22, 2024 [AWS Account: 999999999999] [AP-NORTHEAST-1]
・ 本文:
長いので、上から少しずつ読み解いてみますね。
そんなのいいから対処手順とか教えてよ!って場合は、本項をスキップして「3.AWS通知を読んだら、最初にやること」にお進みくださいませ。
2-1.本文1(メールの趣旨)
超訳です!
・ 東京リージョンのRDSまたはAuroraを使っているひとへのお知らせだよ。
・ そのRDSまたはAuroraのSSL/TLS証明書の「2019 CA」が、2024年8月22日に期限切れだよ。
・ 2024年1月25日までのデフォルトのSSL/TLS証明書のCAは、「2019 CA」だよ。
・ 2024年1月25日からのデフォルトのSSL/TLS証明書のCAは、「rds-ca-rsa2048-g1」だよ。
※CA=認証局が一般的だと思うのですが、RDSコンソール上は「認証機関」でした。
You are receiving this message because your AWS Account has one or more Amazon RDS, or Amazon Aurora database instances in the AP-NORTHEAST-1 Region using an SSL/TLS Certificate that is expiring on August 22, 2024.
This is a follow-up notification for SSL/TLS CA certification expiration.
If you believe you have already finished this work and still received this email it is likely because you created new instances using the 2019 CA.
All newly created instances that don’t explicitly specify a different CA will use the 2019 CA until January 25, 2024 when the default will be switched to rds-ca-rsa2048-g1.For information on setting an account level CA override see the modify-certificates API documentation [1].
<<出典: AWSさんからのメール通知>>
2-2.本文2(SSL/TLS証明書による接続のお話)
超訳です!
・ アプリからのRDS(またはAurola)接続にSSL/TLSプロトコルを利用しているなら更新必須だよ。
If your applications connect to these instances using the Secure Sockets Layer (SSL) or Transport Layer Security (TLS) protocol, you will need to take action before August 22, 2024 to prevent connectivity failures to your existing database instances.
<<出典: AWSさんからのメール通知>>
Even if you do not currently use SSL for your connections, you could still be affected if your databases server certificate expires, so we still recommend updating your CA.
To protect your communications with your database instances, a Certificate Authority (CA) generates time-bound certificates that are checked by your database client software to authenticate any database instance before exchanging information. Following industry best practices, AWS renews the CA and creates new certificates on a routine basis to ensure customer connections are properly protected for years to come. The current CA in AP-NORTHEAST-1 will expire on August 22, 2024. Before this date you will need to update your DB server certificate. The general process to do this is:
2-3.本文3(SSL/TLS証明書の更新手順)
超訳です!
(たぶん)ここが一番気になるところですよね。でも結局、[7][8]のドキュメントを見なきゃいけないようです。
・First(最初に)、アプリ(クライアント)側にて、新しい証明書を更新しましょう。
新しい証明書は「[2] すべての AWS リージョン の証明書バンドル」からダウンロードできるよ。
・Second(次に)、RDSのDBインスタンスの証明書(CA)を推奨の「rds-ca-rsa2048-g1」に更新しましょう。他のCAだと、互換性をテストしたほうがいいよ。
・Third(3つ目に)、AWSアカウントごとのデフォルトのCAを変更しましょう。
(でも、2024年1月までの話だから、これはやんなくていい気がしますね)
・最後に、詳細の更新手順は以下を参照してね。
(RDSの場合)[7]「SSL/TLS 証明書のローテーション」
(Auroraの場合)[8]「SSL/TLS 証明書のローテーション」
First, update your application clients with the new certificate, if your application client is using trust stores then add the new CA certificates into the trust stores of your client applications.
RDS provides download links to the CA certificates here [2]. For more detailed instructions on updating the trust stores on your client application see [3].
Second, update the certificate on all your affected database instances to one of the newly issues CA’s. rds-ca-rsa2048-g1 is the default recommended CA because there is no algorithm change. The other CA’s use new key algorithm’s so it could require more testing of your client setup to ensure compatibility. For more information on the new CA’s see [4].Third, since the 2019 CA is still the default CA you will need to set an account level CA override so your new instances will use one of the new CA’s. To do this a modify-certificates API is available that will allow you to override the default CA on newly created database instances to either the old or one of the new CAs. This override will only apply while the CA you are overriding to is valid. To use this API you will need to be running the AWS CLI version 1.17 or later. For more information see the modify-certificates API documentation [1]. There is also a describe-certificates API [5], that will indicate your current default CA override if you have one set. To set a specific CA during instance creation use the ca-certificate-identifier option on the create-db-instance API is available for you to create a DB instance with a specific CA. For more information, see the create-db-instance API documentation [6].
<<出典: AWSさんからのメール通知>>
For more detailed instructions on how to perform these updates please see the Amazon RDS instances [7] and Amazon Aurora instances [8] documentation.
2-4.本文4(影響を受けるリソース)
むっちゃ大事ですね。
ちゃんと確認しておきましょう。
The following is a list of your affected resources:
arn:aws:rds:ap-northeast-1:0123456789AB(AWSアカウントID):db:example-rds-name(DB識別子)
3.AWS通知を読んだら、最初にやること
なにはともあれ、AWSコンソールにログインしてみましょう。
本件に限らず、AWSさんから通知を受信したら最初にやることですね。
該当するAWSサービスのコンソール、およびAWS Service Healthコンソールを確認してみましょう。
本件はRDSに関する通知ですので、見るべきところはRDSコンソールですね。
AWSさんからの通知を読むだけじゃなくて、じゃぁ実際の設定は?を見てみることは基本動作です。
(極々偶にですが、AWSさんからの通知が誤っていることもあるかもしれません)
① AWSコンソールにログインする。
② RDSコンソールに移動する
③ 対象RDSインスタンスのDB識別子をクリックする。
④ タブ「接続とセキュリティ」をクリックする。
⑤ 目を皿のようにしながら、右下の証明書関連の設定を見てみる。
そんなに頑張らなくてすぐに見つかりました。
・ 認証機関: CAです。むっちゃ「rds-ca-2019」って表示されてますね。
・ 証明機関の日付: August 23,2024,02:08(UTC+09:000)
・ DBインスタンス証明書の有効期限: August 23,2024,02:08(UTC+09:000)
4.証明書の更新時にDBインスタンスは再起動する?
AWS CLIにより、証明書の更新時にDBインスタンスの再起動が発生するか否か、確認できます。
ぜひ、確認しておきましょう。
RDSインスタンスが再起動するなら、業務に影響しないタイミングを探さないといけないですよね。
逆に、再起動が発生しないなら、比較的お手軽に証明書を更新できると思います。
以下が、この作業の元ネタです。
Modify the DB instance to change the CA from rds-ca-2019 to rds-ca-rsa2048-g1.
<<出典>>Rotating your SSL/TLS certificate – Updating your CA certificate by modifying your DB instance –
To check if your database requires a restart to update the CA certificates, use the describe-db-engine-versions command and check the SupportsCertificateRotationWithoutRestart flag.
4-1.エンジンおよびバージョンの確認
① RDSコンソールに移動する。
② 左ペインの「データベース」をクリックする。
③ 対象のDBインスタンスのDB識別子をクリックする。
④ タブ「設定」をクリックする。
⑤ 「エンジン」「エンジンバージョン」を確認する。
※以下の図なら、エンジンは「MySQL Community」(コミュニティってのは無視でよいかな)、エンジンバージョンは「8.0.33」って確認できますね。
4-2.CLIで再起動有無を確認
では、確認したエンジン、エンジンバージョンにおいて証明書更新時のDBインスタンスの再起動が発生するか否か、AWS CLIにて確認してみましょう。
(1)CLIを準備する。
以下の構文です。
「–engine mysql –engine-version 5.7.38」の部分は、「4-1.」での確認結果に従い、エンジン、エンジンバージョンを書き換えてくださいませ。
※以下コマンドでは、RDSインスタンスの再起動が発生するバージョン(mysql 5.7.38)を対象にしています。
aws rds describe-db-engine-versions --engine mysql --engine-version 5.7.38 --region ap-northeast-1
(2)CLIを実行する。
お手軽な、CloudShellから実行してみました。
下のほうの”SupportsCertificateRotationWithoutRestart”(※1)っていうパラメータを見てみましょう。
このエンジン、エンジンバージョンでの値は”false”でした。
Restart(再起動)なしでのCertificateRotation(証明書更新)のSupportはfalseってことです。
つまり、再起動が発生するよーってことですね。
逆にtrueなら再起動無しの証明書更新をサポートしているので、再起動は発生しません。
(おまけ)
このコマンドによる確認ですが、見ての通りエンジンとエンジンバージョンごとの設定の確認です。
言い換えると、AWSアカウント、AWSリソース単位の確認ではありません。
つまり、まとめて確認できます。
確認結果は、本項の末尾に記載しておきますので、ご参照くださいませ(※2)。
ご参照いただければ、個別のCLI実行による確認は不要となるのですが、最新の情報って意味では個別にCLIにてご確認いただくことをおススメしておきます。
[cloudshell-user@ip-10-4-6-8 ~]$ aws rds describe-db-engine-versions --engine mysql --engine-version 5.7.38 --region ap-northeast-1
{
"DBEngineVersions": [
{
"Engine": "mysql",
"EngineVersion": "5.7.38",
"DBParameterGroupFamily": "mysql5.7",
"DBEngineDescription": "MySQL Community Edition",
"DBEngineVersionDescription": "MySQL 5.7.38",
"ValidUpgradeTarget": [
{
"Engine": "mysql",
"EngineVersion": "5.7.39",
"Description": "MySQL 5.7.39",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": false
},
{
"Engine": "mysql",
"EngineVersion": "5.7.40",
"Description": "MySQL 5.7.40",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": false
},
{
"Engine": "mysql",
"EngineVersion": "5.7.41",
"Description": "MySQL 5.7.41",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": false
},
{
"Engine": "mysql",
"EngineVersion": "5.7.42",
"Description": "MySQL 5.7.42",
"AutoUpgrade": true,
"IsMajorVersionUpgrade": false
},
{
"Engine": "mysql",
"EngineVersion": "5.7.43",
"Description": "MySQL 5.7.43",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": false
},
{
"Engine": "mysql",
"EngineVersion": "8.0.28",
"Description": "MySQL 8.0.28",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": true
},
{
"Engine": "mysql",
"EngineVersion": "8.0.32",
"Description": "MySQL 8.0.32",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": true
},
{
"Engine": "mysql",
"EngineVersion": "8.0.33",
"Description": "MySQL 8.0.33",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": true
},
{
"Engine": "mysql",
"EngineVersion": "8.0.34",
"Description": "MySQL 8.0.34",
{
"Engine": "mysql",
"EngineVersion": "8.0.34",
"Description": "MySQL 8.0.34",
"AutoUpgrade": false,
"IsMajorVersionUpgrade": true
}
],
"ExportableLogTypes": [
"audit",
"error",
"general",
"slowquery"
],
"SupportsLogExportsToCloudwatchLogs": true,
"SupportsReadReplica": true,
"SupportedFeatureNames": [],
"Status": "available",
"SupportsParallelQuery": false,
"SupportsGlobalDatabases": false,
"MajorEngineVersion": "5.7",
"SupportsBabelfish": false,
"SupportsCertificateRotationWithoutRestart": false,
"SupportedCACertificateIdentifiers": [
"rds-ca-2019",
"rds-ca-rsa4096-g1",
"rds-ca-rsa2048-g1"
],
"SupportsLocalWriteForwarding": false
}
]
}
(※1)”SupportsCertificateRotationWithoutRestart”
このパラメータの説明を、API Referenceから引用しておきます。
SupportsCertificateRotationWithoutRestart
<<出典>>DBEngineVersion
Indicates whether the engine version supports rotating the server certificate without rebooting the DB instance.
Type: Boolean
Required: No
(※2)全エンジン、全バージョンの確認結果(2023年10月時点)
全エンジン、全バージョンのSupportsCertificateRotationWithoutRestartを見るなら、ここをクリック
[cloudshell-user@ip-10-2-92-76 ~]$ aws rds describe-db-engine-versions --region ap-northeast-1| jq -r '.DBEngineVersions[] |[.Engine ,.EngineVersion ,.SupportsCertificateRotationWithoutRestart] |@csv'
"aurora-mysql","5.7.mysql_aurora.2.07.9",false
"aurora-mysql","5.7.mysql_aurora.2.07.10",false
"aurora-mysql","5.7.mysql_aurora.2.11.1",true
"aurora-mysql","5.7.mysql_aurora.2.11.2",true
"aurora-mysql","5.7.mysql_aurora.2.11.3",true
"aurora-mysql","5.7.mysql_aurora.2.11.3",false
"aurora-mysql","5.7.mysql_aurora.2.11.4",true
"aurora-mysql","5.7.mysql_aurora.2.12.0",true
"aurora-mysql","8.0.mysql_aurora.3.01.0",true
"aurora-mysql","8.0.mysql_aurora.3.01.1",true
"aurora-mysql","8.0.mysql_aurora.3.02.0",true
"aurora-mysql","8.0.mysql_aurora.3.02.1",true
"aurora-mysql","8.0.mysql_aurora.3.02.2",true
"aurora-mysql","8.0.mysql_aurora.3.02.3",true
"aurora-mysql","8.0.mysql_aurora.3.03.0",true
"aurora-mysql","8.0.mysql_aurora.3.03.1",true
"aurora-mysql","8.0.mysql_aurora.3.03.2",true
"aurora-mysql","8.0.mysql_aurora.3.04.0",true
"aurora-mysql","8.0.mysql_aurora.3.05.0",true
"docdb","3.6.0",false
"docdb","4.0.0",false
"docdb","5.0.0",false
"custom-sqlserver-ee","15.00.4073.23.v1",false
"custom-sqlserver-ee","15.00.4249.2.v1",false
"custom-sqlserver-ee","15.00.4261.1.v1",false
"custom-sqlserver-ee","15.00.4312.2.v1",false
"custom-sqlserver-ee","15.00.4322.2.v1",false
"custom-sqlserver-se","15.00.4073.23.v1",false
"custom-sqlserver-se","15.00.4249.2.v1",false
"custom-sqlserver-se","15.00.4261.1.v1",false
"custom-sqlserver-se","15.00.4312.2.v1",false
"custom-sqlserver-se","15.00.4322.2.v1",false
"custom-sqlserver-web","15.00.4073.23.v1",false
"custom-sqlserver-web","15.00.4249.2.v1",false
"custom-sqlserver-web","15.00.4261.1.v1",false
"custom-sqlserver-web","15.00.4312.2.v1",false
"custom-sqlserver-web","15.00.4322.2.v1",false
"neptune","1.1.0.0",false
"neptune","1.1.1.0",false
"neptune","1.2.0.0",false
"neptune","1.2.0.1",false
"neptune","1.2.0.2",false
"neptune","1.2.1.0",false
"aurora-postgresql","11.9",true
"aurora-postgresql","11.13",true
"aurora-postgresql","11.14",true
"aurora-postgresql","11.15",true
"aurora-postgresql","11.16",true
"aurora-postgresql","11.17",true
"aurora-postgresql","11.18",true
"aurora-postgresql","11.18",false
"aurora-postgresql","11.19",true
"aurora-postgresql","11.20",true
"aurora-postgresql","11.21",true
"aurora-postgresql","12.8",true
"aurora-postgresql","12.9",true
"aurora-postgresql","12.10",true
"aurora-postgresql","12.11",true
"aurora-postgresql","12.12",true
"aurora-postgresql","12.13",true
"aurora-postgresql","12.14",true
"aurora-postgresql","12.15",true
"aurora-postgresql","12.16",true
"aurora-postgresql","13.4",true
"aurora-postgresql","13.5",true
"aurora-postgresql","13.6",true
"aurora-postgresql","13.7",true
"aurora-postgresql","13.8",true
"aurora-postgresql","13.9",true
"aurora-postgresql","13.9",false
"aurora-postgresql","13.10",true
"aurora-postgresql","13.11",true
"aurora-postgresql","13.12",true
"aurora-postgresql","14.3",true
"aurora-postgresql","14.4",true
"aurora-postgresql","14.5",true
"aurora-postgresql","14.6",true
"aurora-postgresql","14.7",true
"aurora-postgresql","14.8",true
"aurora-postgresql","14.9",true
"aurora-postgresql","15.2",true
"aurora-postgresql","15.3",true
"aurora-postgresql","15.4",true
"mariadb","10.3.35",false
"mariadb","10.3.36",false
"mariadb","10.3.37",false
"mariadb","10.3.38",false
"mariadb","10.3.39",false
"mariadb","10.4.25",true
"mariadb","10.4.26",true
"mariadb","10.4.27",true
"mariadb","10.4.28",true
"mariadb","10.4.29",true
"mariadb","10.4.30",true
"mariadb","10.4.31",true
"mariadb","10.5.16",true
"mariadb","10.5.17",true
"mariadb","10.5.18",true
"mariadb","10.5.19",true
"mariadb","10.5.20",true
"mariadb","10.5.21",true
"mariadb","10.5.22",true
"mariadb","10.6.8",true
"mariadb","10.6.10",true
"mariadb","10.6.11",true
"mariadb","10.6.12",true
"mariadb","10.6.13",true
"mariadb","10.6.14",true
"mariadb","10.6.15",true
"mariadb","10.11.4",true
"mariadb","10.11.5",true
"mysql","5.7.37",false
"mysql","5.7.38",false
"mysql","5.7.39",false
"mysql","5.7.40",false
"mysql","5.7.41",false
"mysql","5.7.42",false
"mysql","5.7.43",false
"mysql","5.7.44",false
"mysql","8.0.28",true
"mysql","8.0.31",true
"mysql","8.0.32",true
"mysql","8.0.33",true
"mysql","8.0.34",true
"oracle-ee","19.0.0.0.ru-2019-07.rur-2019-07.r1",true
"oracle-ee","19.0.0.0.ru-2019-10.rur-2019-10.r1",true
"oracle-ee","19.0.0.0.ru-2020-01.rur-2020-01.r1",true
"oracle-ee","19.0.0.0.ru-2020-04.rur-2020-04.r1",true
"oracle-ee","19.0.0.0.ru-2020-07.rur-2020-07.r1",true
"oracle-ee","19.0.0.0.ru-2020-10.rur-2020-10.r1",true
"oracle-ee","19.0.0.0.ru-2021-01.rur-2021-01.r1",true
"oracle-ee","19.0.0.0.ru-2021-01.rur-2021-01.r2",true
"oracle-ee","19.0.0.0.ru-2021-04.rur-2021-04.r1",true
"oracle-ee","19.0.0.0.ru-2021-07.rur-2021-07.r1",true
"oracle-ee","19.0.0.0.ru-2021-10.rur-2021-10.r1",true
"oracle-ee","19.0.0.0.ru-2022-01.rur-2022-01.r1",true
"oracle-ee","19.0.0.0.ru-2022-04.rur-2022-04.r1",true
"oracle-ee","19.0.0.0.ru-2022-07.rur-2022-07.r1",true
"oracle-ee","19.0.0.0.ru-2022-10.rur-2022-10.r1",true
"oracle-ee","19.0.0.0.ru-2023-01.rur-2023-01.r1",true
"oracle-ee","19.0.0.0.ru-2023-01.rur-2023-01.r2",true
"oracle-ee","19.0.0.0.ru-2023-04.rur-2023-04.r1",true
"oracle-ee","19.0.0.0.ru-2023-07.rur-2023-07.r1",true
"oracle-ee-cdb","19.0.0.0.ru-2021-04.rur-2021-04.r1",true
"oracle-ee-cdb","19.0.0.0.ru-2021-07.rur-2021-07.r1",true
"oracle-ee-cdb","19.0.0.0.ru-2021-10.rur-2021-10.r1",true
"oracle-ee-cdb","19.0.0.0.ru-2022-01.rur-2022-01.r1",true
"oracle-ee-cdb","19.0.0.0.ru-2022-04.rur-2022-04.r1",true
"oracle-ee-cdb","19.0.0.0.ru-2022-07.rur-2022-07.r1",true
"oracle-ee-cdb","19.0.0.0.ru-2022-10.rur-2022-10.r1",true
"oracle-ee-cdb","19.0.0.0.ru-2023-01.rur-2023-01.r1",true
"oracle-ee-cdb","19.0.0.0.ru-2023-01.rur-2023-01.r2",true
"oracle-ee-cdb","19.0.0.0.ru-2023-04.rur-2023-04.r1",true
"oracle-ee-cdb","19.0.0.0.ru-2023-07.rur-2023-07.r1",true
"oracle-ee-cdb","21.0.0.0.ru-2022-01.rur-2022-01.r1",true
"oracle-ee-cdb","21.0.0.0.ru-2022-04.rur-2022-04.r1",true
"oracle-ee-cdb","21.0.0.0.ru-2022-07.rur-2022-07.r1",true
"oracle-ee-cdb","21.0.0.0.ru-2022-10.rur-2022-10.r1",true
"oracle-ee-cdb","21.0.0.0.ru-2023-01.rur-2023-01.r1",true
"oracle-ee-cdb","21.0.0.0.ru-2023-01.rur-2023-01.r2",true
"oracle-ee-cdb","21.0.0.0.ru-2023-04.rur-2023-04.r1",true
"oracle-ee-cdb","21.0.0.0.ru-2023-07.rur-2023-07.r1",true
"oracle-se2","19.0.0.0.ru-2019-07.rur-2019-07.r1",true
"oracle-se2","19.0.0.0.ru-2019-10.rur-2019-10.r1",true
"oracle-se2","19.0.0.0.ru-2020-01.rur-2020-01.r1",true
"oracle-se2","19.0.0.0.ru-2020-04.rur-2020-04.r1",true
"oracle-se2","19.0.0.0.ru-2020-07.rur-2020-07.r1",true
"oracle-se2","19.0.0.0.ru-2020-10.rur-2020-10.r1",true
"oracle-se2","19.0.0.0.ru-2021-01.rur-2021-01.r1",true
"oracle-se2","19.0.0.0.ru-2021-01.rur-2021-01.r2",true
"oracle-se2","19.0.0.0.ru-2021-04.rur-2021-04.r1",true
"oracle-se2","19.0.0.0.ru-2021-07.rur-2021-07.r1",true
"oracle-se2","19.0.0.0.ru-2021-10.rur-2021-10.r1",true
"oracle-se2","19.0.0.0.ru-2022-01.rur-2022-01.r1",true
"oracle-se2","19.0.0.0.ru-2022-04.rur-2022-04.r1",true
"oracle-se2","19.0.0.0.ru-2022-07.rur-2022-07.r1",true
"oracle-se2","19.0.0.0.ru-2022-10.rur-2022-10.r1",true
"oracle-se2","19.0.0.0.ru-2023-01.rur-2023-01.r1",true
"oracle-se2","19.0.0.0.ru-2023-01.rur-2023-01.r2",true
"oracle-se2","19.0.0.0.ru-2023-04.rur-2023-04.r1",true
"oracle-se2","19.0.0.0.ru-2023-07.rur-2023-07.r1",true
"oracle-se2-cdb","19.0.0.0.ru-2021-04.rur-2021-04.r1",true
"oracle-se2-cdb","19.0.0.0.ru-2021-07.rur-2021-07.r1",true
"oracle-se2-cdb","19.0.0.0.ru-2021-10.rur-2021-10.r1",true
"oracle-se2-cdb","19.0.0.0.ru-2022-01.rur-2022-01.r1",true
"oracle-se2-cdb","19.0.0.0.ru-2022-04.rur-2022-04.r1",true
"oracle-se2-cdb","19.0.0.0.ru-2022-07.rur-2022-07.r1",true
"oracle-se2-cdb","19.0.0.0.ru-2022-10.rur-2022-10.r1",true
"oracle-se2-cdb","19.0.0.0.ru-2023-01.rur-2023-01.r1",true
"oracle-se2-cdb","19.0.0.0.ru-2023-01.rur-2023-01.r2",true
"oracle-se2-cdb","19.0.0.0.ru-2023-04.rur-2023-04.r1",true
"oracle-se2-cdb","19.0.0.0.ru-2023-07.rur-2023-07.r1",true
"oracle-se2-cdb","21.0.0.0.ru-2022-01.rur-2022-01.r1",true
"oracle-se2-cdb","21.0.0.0.ru-2022-04.rur-2022-04.r1",true
"oracle-se2-cdb","21.0.0.0.ru-2022-07.rur-2022-07.r1",true
"oracle-se2-cdb","21.0.0.0.ru-2022-10.rur-2022-10.r1",true
"oracle-se2-cdb","21.0.0.0.ru-2023-01.rur-2023-01.r1",true
"oracle-se2-cdb","21.0.0.0.ru-2023-01.rur-2023-01.r2",true
"oracle-se2-cdb","21.0.0.0.ru-2023-04.rur-2023-04.r1",true
"oracle-se2-cdb","21.0.0.0.ru-2023-07.rur-2023-07.r1",true
"postgres","11.16",true
"postgres","11.17",true
"postgres","11.18",true
"postgres","11.19",true
"postgres","11.20",true
"postgres","11.21",true
"postgres","12.11",true
"postgres","12.12",true
"postgres","12.13",true
"postgres","12.14",true
"postgres","12.15",true
"postgres","12.16",true
"postgres","13.7",true
"postgres","13.8",true
"postgres","13.9",true
"postgres","13.10",true
"postgres","13.11",true
"postgres","13.12",true
"postgres","14.3",true
"postgres","14.4",true
"postgres","14.5",true
"postgres","14.6",true
"postgres","14.7",true
"postgres","14.8",true
"postgres","14.9",true
"postgres","15.2",true
"postgres","15.3",true
"postgres","15.4",true
"sqlserver-ee","12.00.6293.0.v1",false
"sqlserver-ee","12.00.6329.1.v1",false
"sqlserver-ee","12.00.6433.1.v1",false
"sqlserver-ee","12.00.6439.10.v1",false
"sqlserver-ee","12.00.6444.4.v1",false
"sqlserver-ee","13.00.6300.2.v1",false
"sqlserver-ee","13.00.6419.1.v1",false
"sqlserver-ee","13.00.6430.49.v1",false
"sqlserver-ee","14.00.3281.6.v1",false
"sqlserver-ee","14.00.3294.2.v1",false
"sqlserver-ee","14.00.3356.20.v1",false
"sqlserver-ee","14.00.3381.3.v1",false
"sqlserver-ee","14.00.3401.7.v1",false
"sqlserver-ee","14.00.3421.10.v1",false
"sqlserver-ee","14.00.3451.2.v1",false
"sqlserver-ee","14.00.3460.9.v1",false
"sqlserver-ee","15.00.4043.16.v1",false
"sqlserver-ee","15.00.4073.23.v1",false
"sqlserver-ee","15.00.4153.1.v1",false
"sqlserver-ee","15.00.4198.2.v1",false
"sqlserver-ee","15.00.4236.7.v1",false
"sqlserver-ee","15.00.4312.2.v1",false
"sqlserver-ee","15.00.4316.3.v1",false
"sqlserver-ee","15.00.4322.2.v1",false
"sqlserver-ex","12.00.6293.0.v1",false
"sqlserver-ex","12.00.6329.1.v1",false
"sqlserver-ex","12.00.6433.1.v1",false
"sqlserver-ex","12.00.6439.10.v1",false
"sqlserver-ex","12.00.6444.4.v1",false
"sqlserver-ex","13.00.6300.2.v1",false
"sqlserver-ex","13.00.6419.1.v1",false
"sqlserver-ex","13.00.6430.49.v1",false
"sqlserver-ex","14.00.3281.6.v1",false
"sqlserver-ex","14.00.3294.2.v1",false
"sqlserver-ex","14.00.3356.20.v1",false
"sqlserver-ex","14.00.3381.3.v1",false
"sqlserver-ex","14.00.3401.7.v1",false
"sqlserver-ex","14.00.3421.10.v1",false
"sqlserver-ex","14.00.3451.2.v1",false
"sqlserver-ex","14.00.3460.9.v1",false
"sqlserver-ex","15.00.4043.16.v1",false
"sqlserver-ex","15.00.4073.23.v1",false
"sqlserver-ex","15.00.4153.1.v1",false
"sqlserver-ex","15.00.4198.2.v1",false
"sqlserver-ex","15.00.4236.7.v1",false
"sqlserver-ex","15.00.4312.2.v1",false
"sqlserver-ex","15.00.4316.3.v1",false
"sqlserver-ex","15.00.4322.2.v1",false
"sqlserver-se","12.00.6293.0.v1",false
"sqlserver-se","12.00.6329.1.v1",false
"sqlserver-se","12.00.6433.1.v1",false
"sqlserver-se","12.00.6439.10.v1",false
"sqlserver-se","12.00.6444.4.v1",false
"sqlserver-se","13.00.6300.2.v1",false
"sqlserver-se","13.00.6419.1.v1",false
"sqlserver-se","13.00.6430.49.v1",false
"sqlserver-se","14.00.3281.6.v1",false
"sqlserver-se","14.00.3294.2.v1",false
"sqlserver-se","14.00.3356.20.v1",false
"sqlserver-se","14.00.3381.3.v1",false
"sqlserver-se","14.00.3401.7.v1",false
"sqlserver-se","14.00.3421.10.v1",false
"sqlserver-se","14.00.3451.2.v1",false
"sqlserver-se","14.00.3460.9.v1",false
"sqlserver-se","15.00.4043.16.v1",false
"sqlserver-se","15.00.4073.23.v1",false
"sqlserver-se","15.00.4153.1.v1",false
"sqlserver-se","15.00.4198.2.v1",false
"sqlserver-se","15.00.4236.7.v1",false
"sqlserver-se","15.00.4312.2.v1",false
"sqlserver-se","15.00.4316.3.v1",false
"sqlserver-se","15.00.4322.2.v1",false
"sqlserver-web","12.00.6293.0.v1",false
"sqlserver-web","12.00.6329.1.v1",false
"sqlserver-web","12.00.6433.1.v1",false
"sqlserver-web","12.00.6439.10.v1",false
"sqlserver-web","12.00.6444.4.v1",false
"sqlserver-web","13.00.6300.2.v1",false
"sqlserver-web","13.00.6419.1.v1",false
"sqlserver-web","13.00.6430.49.v1",false
"sqlserver-web","14.00.3281.6.v1",false
"sqlserver-web","14.00.3294.2.v1",false
"sqlserver-web","14.00.3356.20.v1",false
"sqlserver-web","14.00.3381.3.v1",false
"sqlserver-web","14.00.3401.7.v1",false
"sqlserver-web","14.00.3421.10.v1",false
"sqlserver-web","14.00.3451.2.v1",false
"sqlserver-web","14.00.3460.9.v1",false
"sqlserver-web","15.00.4043.16.v1",false
"sqlserver-web","15.00.4073.23.v1",false
"sqlserver-web","15.00.4153.1.v1",false
"sqlserver-web","15.00.4198.2.v1",false
"sqlserver-web","15.00.4236.7.v1",false
"sqlserver-web","15.00.4312.2.v1",false
"sqlserver-web","15.00.4316.3.v1",false
"sqlserver-web","15.00.4322.2.v1",false
5.SSL/TLS証明書の更新手順
それではAWSさんのメールにて案内されていたドキュメントに記載された更新手順をご紹介しておきます。前述した以下の更新手順です。
> ・最後に、詳細の更新手順は以下を参照してね。
> (RDSの場合)[7]「SSL/TLS 証明書のローテーション」
> (Auroraの場合)[8]「SSL/TLS 証明書のローテーション」
上記の(RDSの場合)の手順を読むと、以下のような感じでした。
(Auroraの場合)も、似たような手順だと思います。
5-1.方式
以下の2つの方式があるそうです。
何れかの方式にて、SSL/TLS証明書を更新くださいませ。
両方式とも、RDSのエンジン、バージョンによってはDBインスタンスが再起動します。
即時に更新する(方式1)か、メンテナンスウィンドウ(設定日時)に更新する(方式2)かの違いです。
・ (方式1)DB インスタンスの変更による CA 証明書の更新
・ (方式2)メンテナンスの適用による CA 証明書の更新
5-2.(方式1)DB インスタンスの変更による CA 証明書の更新
SSL/TLS証明書をご利用ではない場合は、(1)(2)をスキップください((3)から実施くださいませ。)。
(1)SSL/TLS証明書のダウンロード
「すべての AWS リージョン の証明書バンドル」に従い、以下から証明書をダウンロードください。
現新の証明書がバンドルされているって書いてありますので、RDSインスタンス側の更新前後も継続して接続できるはずです。
・ すべての AWS リージョン の中間証明書とルート証明書の両方を含む証明書バンドル
https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem
・ Windows向けのPKCS7証明書
https://truststore.pki.rds.amazonaws.com/global/global-bundle.p7b
(2)アプリケーション上の証明書を更新
この作業は、お使いのアプリケーションにより変わっちゃいます。
なので、AWSさんのドキュメントに記載されていた以下をご案内だけしておきます。
お使いのアプリケーションに応じた方式で、SSL/TLS証明書を更新ください。
・ MariaDB DB インスタンスに対する新しい SSL/TLS 証明書の使用
<<出典:DB インスタンスの変更による CA 証明書の更新>>
・ 新しい SSL/TLS 証明書を使用して Microsoft SQL Server DB インスタンスに接続するようにアプリケーションを更新する
・ MySQL DB インスタンスに対する新しい SSL/TLS 証明書の使用
・ 新しい SSL/TLS 証明書を使用するためのアプリケーションの更新
・ 新しい SSL/TLS 証明書を使用するためのアプリケーションの更新
・ Linux オペレーティングシステムの信頼ストアを更新するサンプルスクリプトについては、「証明書を信頼ストアにインポートするためのサンプルスクリプト」を参照してください。
アプリケーションというかコマンドレベルなら、以下の例のようなコマンドのオプションで指定する証明書を変更するだけです。
以下は、mysqlの場合のSSL/TLS接続を利用したログインコマンドの例です。
(出典: SSL 接続を使用して Amazon RDS インスタンスに正常に接続するにはどうすればよいですか。)
“–ssl-ca=[full path]global-bundle.pem”でのファイル指定を、(1)でダウンロードしたファイル(証明書)に変更ください。
mysql -h myinstance.123456789012.rds-us-east-1.amazonaws.com -u testuser -p --ssl-ca=[full path]global-bundle.pem --ssl-mode=VERIFY_IDENTITY
(3)DBインスタンスを変更する。
① AWSコンソールにログインする。
② RDSコンソールに移動する。
③ 左ペインの「データベース」をクリックする。
④ 対象のDBインスタンスの「DB識別子」をクリックする。
⑤ 画面右上の「変更」をクリックする。
※「変更」をクリックする前に、DB識別子が変更対象のものであるか確認くださいません。
⑥ 画面真ん中ぐらいの「接続」の「認証機関」を変更する(クリックする)。
変更前: rds-ca-2019
変更後: rds-ca-rsa2048-g1
⑦ 画面右下の「続行」をクリックする。
⑧ 「DB インスタンスを変更: example-database」画面が表示されたら、変更内容が意図通りであるか、確認する。
・ 属性「認証機関」の現在の値が「rds-ca-2019」であること
・ 属性「認証機関」の新しい値が「rds-ca-rsa2048-g1」であること
⑨ 変更のスケジュールでは、「すぐに適用」をチェックする。
⑩ 「DBインスタンスを変更」をクリックする。
※ ”SupportsCertificateRotationWithoutRestart”=false の場合、クリックすると直ちにDBインスタンスが再起動します。
※ ”SupportsCertificateRotationWithoutRestart”=true の場合、いずれの方式の更新においてもDBインスタンスの再起動は発生いたしません。
⑪ DBインスタンスの照会画面にて、証明書が更新されたことを確認してみましょう。
期待した通りに更新されていれば本作業は終了です。
(下図だと、認証機関=「rds-ca-rsa4096-g1」であることが確認できますね)
あ、SSL/TLSでの接続確認は、別途にやっておいてくださいね。
5-3.(方式2)メンテナンスの適用による CA 証明書の更新
(方式1)同様、SSL/TLS証明書をご利用ではない場合は、(1)(2)をスキップください。
((3)から実施くださいませ。)
(1)SSL/TLS証明書のダウンロード
「5-2.」と同一の手順です。ご参照くださいませ。
(2)アプリケーション上の証明書を更新
「5-2.」と同一の手順です。ご参照くださいませ。
(3)まずAWSからのメンテナンス通知を確認してみましょう。
① AWS Health Dashbordコンソールに移動する。
② 左ペインの「Other notifications」をクリックする。
③ 表示されているEvent「RDS operational notification」をクリックする。
④ タブ「Details」にて、AWSからの通知メールと同一の内容であることを確認する。
⑤ タブ「Affected Resources」にて、AWSからの通知メールと同一のリソースであることを確認する。
(4)DB インスタンスのメンテナンスの適用による CA 証明書の更新
① AWSコンソールにログインする。
② RDSコンソールに移動する。
③ 左ペインの「データベース」をクリックする。
④ 対象のDBインスタンスの「DB識別子」をクリックする。
⑤ タブ「メンテナンスとバックアップ」をクリックする。
⑥ 本件の「メンテナンス」を確認してみましょう。
保留中のメンテナンスとして、「New Operating System update is available」が表示されていますね。
これがSSL/TLS証明書の更新です(先ほど、AWS Service Healthで確認したメンテナンスです)。
⑦ 上図の「今すぐ適用」または「次のメンテナンスウィンドウで適用」をクリックする。
「今すぐ適用」では、今すぐ当該DBインスタンスの「認証機関」(CA)が更新されます。
「次のメンテナンスウィンドウで適用」では、メンテナンスウインドウとして設定された日時に「認証機関」(CA)が更新されます。
※メンテナンスウインドウとして設定された日時は、上図の「メンテナンスウィンドウ」にて確認しましょう。
(おまけ)
なお、複数のインスタンスの証明書を同時に更新する場合は、以下の手順をご参照ください。
10.まとめ
冒頭に「結論」として書いたこととほぼ同じですが、表でまとめてみました。
観点 | 説明 | 補足 |
---|---|---|
本通知(メンテナンス)の概要 | RDSにSSL/TLS接続するための証明書(rds-ca-2019)の期限切れ | 2024年8月22日 |
スケジュール① | (現在から 2024 年 8 月 22 日まで) 接続元(クライアント)側の証明書はいつでも更新できる。 (その後、DBインスタンス側の証明書を更新すればよい) | SSL/TLS接続を利用している場合、DBインスタンス側の更新前に、接続元(クライアント)側で更新しましょうってことです。 |
スケジュール② | (現在から 2024 年 1 月 25 日まで) 新規にDB インスタンスを作成する場合、デフォルトで 2019 CA 証明書が設定される。 | すぐに変更すればいいだけだからそんなに気にしなくていい気がします。 DBインスタンス作成時のAPIのオプション(ca-certificate-identifier)指定、または、AWSアカウント自体のデフォルト CA オーバーライドを指定すれば対処できるそうですが、不要かなぁと思います(頻繁にDBインスタンスを作成するひとには推奨します) |
スケジュール③ | (2024 年 1 月 26 日以降) 新しいDBインスタンスはすべて、デフォルトで rds-ca-rsa2048-g1 証明書を使用するようになる。 | DBインスタンス作成時の手間がほんの少し減ります。 |
スケジュール④ | (2024 年 8 月 22 日以降) 2019 CA の有効期限が切れます。 | 現在のSSL/TLS証明書では接続できなくなります。 |
スケジュール⑤ | (現在から2024 年 8 月 22 日以降) DBインスタンスで指定しているメンテナンスウィンドウにて、証明書が自動更新されます。 | AWSサポートさんに聞いたところ、この自動適用は前倒しの可能性があるそうです。従い、早めの対処をおススメいたします。 |
影響(証明書を更新しなかった場合) | 上記のスケジュール⑤にて、勝手に証明書が更新されます。 若し、SSL/TLS接続を利用されている場合、そのタイミングで旧証明書での接続は不可となります。 | SSL/TLS接続を利用されてない場合は、DBへの接続自体には影響ありません。 ただ、後述する通り、証明書の更新時にDBインスタンスが再起動してしまう可能性があります。 |
影響(証明書の更新時) | RDSのエンジン、エンジンバージョンによってはDBインスタンスの再起動が発生します。 | 「4.証明書の更新時にDBインスタンスは再起動する?」をご参照ください。 |
対処(SSL/TLS接続を利用している場合) | 1.接続元(クライアント)側で証明書を更新 2.DBインスタンスの証明書を更新 | 上記に従い、事前にDBインスタンスの再起動有無を確認しておきましょう。 確認方法は、「4-2.CLIで再起動有無を確認」をご参照ください。 |
対処(SSL/TLS接続を使ってない場合) | DBインスタンスの証明書を更新 | 〃 |
X.勉強したページ
本ブログを書く際に参照したAWSさんの公式ドキュメントは以下の通りです。
- (RDSの場合)「SSL/TLS 証明書のローテーション」(証明書の更新手順です)
- (Auroraの場合)「SSL/TLS 証明書のローテーション」(証明書の更新手順です)
- すべての AWS リージョン の証明書バンドル(ここから、証明書をダウンロードできます)
- SSL 接続を使用して Amazon RDS インスタンスに正常に接続するにはどうすればよいですか。(SSL/TLS接続の方式です)
- DB インスタンスの変更による CA 証明書の更新(アプリケーション側の更新作業です)
- DBEngineVersion(RDSのAPIリファレンスです)
Y.eyeonの宣伝
さて、長々と書きましたが、こんな作業は面倒ですよね。
(やってみたらそれほどでも、な気もしますが)
メンドイって場合はぜひ、AWSインフラの構築、監視、運用のすべて、またはどれかをeyeonにお任せいただけると嬉しいです!
- お問い合わせフォームはこちらです。
- eyeonのサービスのご紹介として以下をご笑覧くださいませ。
- 以下のeyeon内のブログでもeyeonのサービス内容についてご紹介しております。