SSL/TLS 証明書の更新 - Amazon Relational Database Service

SSL/TLS 証明書の更新

2020 年 3 月 5 日現在、Amazon RDS CA-2015 証明書の有効期限は切れています。RDS DB インスタンスに接続するための証明書の検証で Secure Sockets Layer (SSL) または Transport Layer Security (TLS) を使用する場合は、Amazon RDS CA-2019 証明書が必要です。この証明書は、新しい DB インスタンスに対してデフォルトで有効になります。現在 SSL/TLS を証明書の検証に使用していない場合でも、有効期限が切れた CA-2015 が存在している場合があります。これらは、RDS データベースに接続するための証明書の検証で SSL/TLS を使用する予定がある場合は、CA-2019 証明書に更新する必要があります。

更新を行うには、次の手順に従います。新しい CA 証明書を使用するように DB インスタンスを更新する前に、RDS データベースに接続するクライアントまたはアプリケーションを必ず更新します。

Amazon RDS では、AWS セキュリティのベストプラクティスとして、新しい CA 証明書を提供しています。新しい証明書およびサポートしている AWS リージョンに関する詳細は、「SSL/TLS を使用した DB インスタンスへの接続の暗号化」をご参照ください。

注記

Amazon RDS Proxy AWS Certificate Manager (ACM) の証明書を使用します。RDS Proxy を使用している場合は、SSL/TLS 証明書を更新するときに、RDS Proxy 接続を使用するアプリケーションを更新する必要はありません。RDS Proxy で TLS/SSL を使用する方法の詳細については、「RDS Proxy での TLS/SSL の使用」を参照してください。

DB インスタンスの変更による CA 証明書の更新

CA 証明書を更新するには、以下のステップを完了します。

DB インスタンスを変更して CA 証明書を更新するには

  1. SSL/TLS を使用した DB インスタンスへの接続の暗号化」の説明に従って、新しい SSL/TLS 証明書をダウンロードします。

  2. 新しい SSL/TLS 証明書を使用するようにアプリケーションを更新します。

    新しい SSL/TLS 証明書のアプリケーションを更新する方法は、特定のアプリケーションにより異なります。アプリケーション開発者と協力して、アプリケーションの SSL/TLS 証明書を更新します。

    SSL/TLS 接続の確認および各 DB エンジン用アプリケーションの更新については、以下のトピックを参照してください。

    Linux オペレーティングシステムの信頼ストアを更新するサンプルスクリプトについては、「証明書を信頼ストアにインポートするためのサンプルスクリプト」を参照してください。

    注記

    証明書バンドルには古い CA と新しい CA の両方の証明書が含まれます。そのため、アプリケーションを安全に更新し、移行期間に接続を維持することができます。AWS Database Migration Service を使用してデータベースを DB インスタンスに移行する場合は、移行中の接続を確保するために証明書バンドルを使用することをお勧めします。

  3. CA を rds-ca-2015 から rds-ca-2019 に変更するには、DB インスタンスを変更します。

    重要

    デフォルトでは、このオペレーションにより、DB インスタンスが再起動されます。このオペレーション中に DB インスタンスを再起動しない場合は、modify-db-instance CLI コマンドを使用し、--no-certificate-rotation-restart オプションを指定できます。

    このオプションは、計画的または計画外のメンテナンスのためにデータベースが次回再起動されるまで、証明書を更新しません。このオプションは、SSL/TLS を使用しない場合にのみ推奨されます。

    証明書の有効期限が切れた後に接続の問題が発生した場合は、コンソールで [すぐに適用] を指定するか、AWS CLI を使用して --apply-immediately オプションを指定します。デフォルトで、このオペレーションは次のメンテナンスウィンドウの間に実行するようスケジュールされています。

AWS マネジメントコンソール または AWS CLI を使用して、DB インスタンスに CA 証明書を rds-ca-2015 から rds-ca-2019 に変更できます。

DB インスタンスに CA を rds-ca-2015 から rds-ca-2019 に変更するには

  1. AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択し、変更する DB インスタンスを選択します。

  3. [Modify] を選択します。

    
                                        Modify DB instance

    [Modify DB Instance] ページが表示されます。

  4. ネットワークセキュリティ セクションで、rds-ca-2019 を選択します。

    
                                        CA 証明書の選択
  5. [Continue] を選択して、変更の概要を確認します。

  6. 変更をすぐに反映させるには、[Apply immediately] を選択します。

    重要

    このオプションを選択すると、データベースが直ちに再起動されます。

  7. 確認ページで、変更内容を確認します。正しい場合は、[Modify DB Instance] を選択して変更を保存します。

    重要

    このオペレーションをスケジュールする場合は、必ずクライアント側の信頼ストアを事前に更新します。

    または、[戻る] を選択して変更を編集するか、[キャンセル] を選択して変更をキャンセルします。

AWS CLI を使用して、DB インスタンスの CA を rds-ca-2015 から rds-ca-2019 に変更するには、modify-db-instance コマンドを呼び出します。DB インスタンス識別子および --ca-certificate-identifier オプションを指定します。

重要

このオペレーションをスケジュールする場合は、必ずクライアント側の信頼ストアを事前に更新します。

CA 証明書を rds-ca-2019 に設定することにより、以下のコードで mydbinstance を変更します。変更は、--no-apply-immediately を使用して次のメンテナンスウィンドウ中に適用されます。今すぐ変更を適用するには、--apply-immediately を使用します。

重要

デフォルトでは、このオペレーションにより、DB インスタンスが再起動されます。このオペレーション中に DB インスタンスを再起動しない場合は、modify-db-instance CLI コマンドを使用し、--no-certificate-rotation-restart オプションを指定できます。

このオプションは、計画的または計画外のメンテナンスのためにデータベースが次回再起動されるまで、証明書を更新しません。このオプションは、SSL/TLS を使用しない場合にのみ推奨されます。

--apply-immediately を使用して、更新プログラムを直ちに適用します。デフォルトで、このオペレーションは次のメンテナンスウィンドウの間に実行するようスケジュールされています。

Linux、macOS、Unix の場合:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --ca-certificate-identifier rds-ca-2019 \ --no-apply-immediately

Windows の場合:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --ca-certificate-identifier rds-ca-2019 ^ --no-apply-immediately

DB インスタンスのメンテナンスの適用による CA 証明書の更新

DB インスタンスのメンテナンスを適用して CA 証明書を更新するには、次の手順を実行します。

DB インスタンスのメンテナンスを適用して CA 証明書を更新するには

  1. SSL/TLS を使用した DB インスタンスへの接続の暗号化」の説明に従って、新しい SSL/TLS 証明書をダウンロードします。

  2. 新しい SSL/TLS 証明書を使用するには、データベースのアプリケーションを更新します。

    新しい SSL/TLS 証明書のアプリケーションを更新する方法は、特定のアプリケーションにより異なります。アプリケーション開発者と協力して、アプリケーションの SSL/TLS 証明書を更新します。

    SSL/TLS 接続の確認および各 DB エンジン用アプリケーションの更新については、以下のトピックを参照してください。

    Linux オペレーティングシステムの信頼ストアを更新するサンプルスクリプトについては、「証明書を信頼ストアにインポートするためのサンプルスクリプト」を参照してください。

    注記

    証明書バンドルには古い CA と新しい CA の両方の証明書が含まれます。そのため、アプリケーションを安全に更新し、移行期間に接続を維持することができます。

  3. DB インスタンスのメンテナンスを適用して、CA を rds-ca-2015 から rds-ca-2019に変更します。

    重要

    変更を直ちに適用することを選択できます。デフォルトで、このオペレーションは次のメンテナンスウィンドウの間に実行するようスケジュールされています。

AWS マネジメントコンソール を使用して DB インスタンスのメンテナンスを適用し、複数の DB インスタンスの CA 証明書を rds-ca-2015 から rds-ca-2019 に変更できます。

複数の DB インスタンスへのメンテナンスの適用による CA 証明書の更新

AWS マネジメントコンソール を使用して、複数の DB インスタンスの CA 証明書を変更します。

複数の DB インスタンスの CA を rds-ca-2015 から rds-ca-2019 に変更するには

  1. AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択します。

    ナビゲーションペインには、影響を受ける DB インスタンスの合計数を示す [Certificate update (証明書の更新)] オプションがあります。

    
                                    ナビゲーションペインの証明書の更新オプション

    ナビゲーションペインで [Certificate update] を選択します。

    [Update your Amazon RDS SSL/TLS certificates (RDS SSL/TLS 証明書の更新)] ページが表示されます。

    
                                    複数の DB インスタンスの CA 証明書の更新
    注記

    このページには、現在の AWS リージョンの DB インスタンスのみが表示されます。複数の AWS リージョンに DB インスタンスがある場合は、このページを AWS リージョンごとにチェックし、古い SSL/TLS 証明書を使用しているすべての DB インスタンスを確認します。

  3. 更新する DB インスタンスを選択します。

    [Update at the next maintenance window (次のメンテナンスウィンドウで更新)] を選択すると、次のメンテナンスウィンドウでの証明書の更新をスケジュールできます。[今すぐ更新] を選択して、直ちに更新を適用します。

    重要

    CA 証明書が更新されると、オペレーションによって DB インスタンスが再起動されます。

    証明書の有効期限が切れた後に接続の問題が発生した場合は、[今すぐ更新] オプションを使用します。

  4. [Update at the next maintenance window (次のメンテナンスウィンドウで更新)] または [今すぐ更新] を選択すると、CA 証明書の更新を確認するメッセージが表示されます。

    重要

    データベースでの CA 証明書の更新をスケジュールする前に、SSL/TLS とサーバー証明書を接続に使用するクライアントアプリケーションを更新します。これらの更新は、DB エンジンに固有です。アプリケーションで SSL/TLS とサーバー証明書を接続に使用するかどうかを判断するには、「ステップ 2: 新しい SSL/TLS 証明書を使用するようにデータベースアプリケーションを更新する」を参照してください。これらのクライアントアプリケーションを更新したら、CA 証明書の更新を確認できます。

    
                                    証明書の更新の確認

    続行するには、チェックボックスをオンにし、[確認] を選択します。

  5. 更新する DB インスタンスごとに、ステップ 3 と 4 を繰り返します。

証明書を信頼ストアにインポートするためのサンプルスクリプト

次のサンプルシェルスクリプトでは、証明書バンドルを信頼ストア内にインポートします。

Linux で証明書をインポートするためのサンプルスクリプト

Linux オペレーティングシステムで、証明書バンドルを信頼ストアにインポートするサンプルシェルスクリプトを次に示します。

mydir=tmp/certs if [ ! -e "${mydir}" ] then mkdir -p "${mydir}" fi truststore=${mydir}/rds-truststore.jks storepassword=changeit curl -sS "https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem" > ${mydir}/rds-combined-ca-bundle.pem awk 'split_after == 1 {n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1}{print > "rds-ca-" n ".pem"}' < ${mydir}/rds-combined-ca-bundle.pem for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print') echo "Importing $alias" keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt rm $CERT done rm ${mydir}/rds-combined-ca-bundle.pem echo "Trust store content is: " keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'` echo " Certificate ${alias} expires in '$expiry'" done

macOS で証明書をインポートするためのサンプルスクリプト

macOS で証明書バンドルを信頼ストアにインポートするサンプルシェルスクリプトを次に示します。

mydir=tmp/certs if [ ! -e "${mydir}" ] then mkdir -p "${mydir}" fi truststore=${mydir}/rds-truststore.jks storepassword=changeit curl -sS "https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem" > ${mydir}/rds-combined-ca-bundle.pem split -p "-----BEGIN CERTIFICATE-----" ${mydir}/rds-combined-ca-bundle.pem rds-ca- for CERT in rds-ca-*; do alias=$(openssl x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print') echo "Importing $alias" keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt rm $CERT done rm ${mydir}/rds-combined-ca-bundle.pem echo "Trust store content is: " keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias do expiry=`keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n/) { print "$1\n"; }'` echo " Certificate ${alias} expires in '$expiry'" done