Share via


Azure Database for MySQL 単一サーバーのルート CA の変更について

適用対象: Azure Database for MySQL - シングル サーバー

重要

Azure Database for MySQL の単一サーバーは提供終了パスにあります。 Azure Database for MySQL フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for MySQL フレキシブル サーバーへの移行の詳細については、「Azure Database for MySQL 単一サーバーの動作」を参照してください

標準のメンテナンスとセキュリティのベスト プラクティスの一環として、Azure Database for MySQL 単一サーバーでは、ルート証明書の変更が 2022 年 10 月以降に完了します。 この記事では、変更、影響を受けるリソース、アプリケーションでデータベース サーバーへの接続を確実に維持するために必要な手順について、詳しく説明します。

注意

この記事は、Azure Database for MySQL シングル サーバーにのみ適用されます。 Azure Database for MySQL - フレキシブル サーバーの場合、SSL を介した通信に必要な証明書は DigiCert グローバル ルート CA です。

この記事には、Microsoft が使用しなくなった "スレーブ" という用語への言及が含まれています。 ソフトウェアからこの用語が削除された時点で、この記事から削除します。

なぜルート証明書の更新が必要なのですか?

Azure Database for MySQL ユーザーが MySQL サーバーに接続するには、こちらにある定義済みの証明書を使用するしかありません。 ただし、証明機関 (CA) ブラウザー フォーラムから最近、CA ベンダーによって発行された複数の証明書が準拠していないことを示すレポートが公開されました。

業界のコンプライアンス要件に従い、CA ベンダーでは、準拠していない CA の CA 証明書を取り消し、サーバーに対して、準拠している CA によって発行され、それらの準拠している CA の CA 証明書によって署名された証明書を使用するよう求めるようになりました。 Azure Database for MySQL にはこれらの準拠していない証明書の 1 つが使用されていたため、MySQL サーバーへの潜在的な脅威を最小限に抑えるために、証明書を準拠バージョンにローテーションする必要がありました。

接続を維持するためにクライアントに変更を加える必要はありますか?

以下の「結合された CA 証明書を作成する」の手順に従った場合、結合された CA 証明書から BaltimoreCyberTrustRoot 証明書が削除されない限り、接続を継続できます。 接続を維持するために、追加の通知があるまでは、結合された CA 証明書に BaltimoreCyberTrustRoot を保持することをお勧めします。

結合された CA 証明書を作成する

証明書の予期しない取り消しの結果としてアプリケーションの可用性が中断されないようにするため、または取り消された証明書を更新するためには、以下の手順に従います。 現在の証明書と新しいものを結合する新しい .pem ファイルを作成し、SSL 証明書の検証時に、許可された値のいずれかが使用されるという考え方です。 次の手順を参照してください。

  1. 以下のリンクから、BaltimoreCyberTrustRoot と DigiCertGlobalRootG2 のルート CA をダウンロードします。

  2. BaltimoreCyberTrustRootDigiCertGlobalRootG2 の両方の証明書が含まれる、結合された CA 証明書ストアを生成します。

    • Java (MySQL Connector/J) ユーザーの場合は、次を実行します。

      keytool -importcert -alias MySQLServerCACert -file D:\BaltimoreCyberTrustRoot.crt.pem -keystore truststore -storepass password -noprompt
      
      keytool -importcert -alias MySQLServerCACert2 -file D:\DigiCertGlobalRootG2.crt.pem -keystore truststore -storepass password -noprompt
      

      次に、元のキーストア ファイルを、新しく生成されたものに置き換えます。

      • System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
      • System.setProperty("javax.net.ssl.trustStorePassword","password");
    • .NET (MySQL Connector/NET、MySQLConnector) ユーザーの場合は、Windows 証明書ストアの信頼されたルート証明機関に BaltimoreCyberTrustRootDigiCertGlobalRootG2 の両方が存在することを確認します。 いずれかの証明書が存在しない場合は、不足している証明書をインポートします。

      Azure Database for MySQL .NET cert diagram

    • SSL_CERT_DIR を使用する Linux 上の .NET ユーザーの場合は、BaltimoreCyberTrustRootDigiCertGlobalRootG2 の両方が SSL_CERT_DIR によって示されるディレクトリに存在することを確認します。 いずれかの証明書が存在しない場合は、不足している証明書ファイルを作成します。

    • その他の (MySQL Client/MySQL Workbench/C/C++/Go/Python/Ruby/PHP/NodeJS/Perl/Swift) ユーザーの場合は、2 つの CA 証明書ファイルを次のような形式にマージできます。

      -----BEGIN CERTIFICATE-----
      (Root CA1: BaltimoreCyberTrustRoot.crt.pem)
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      (Root CA2: DigiCertGlobalRootG2.crt.pem)
      -----END CERTIFICATE-----
      
  3. 元のルート CA pem ファイルを、結合されたルート CA ファイルに置き換えて、アプリケーションやクライアントを再起動します。

    将来的に、サーバー側に新しい証明書がデプロイされた後は、CA pem ファイルを DigiCertGlobalRootG2.crt.pem に変更できます。

注意

証明書の変更が行われるまでは、Baltimore 証明書を破棄または変更しないでください。 変更が完了すると、Microsoft からコミュニケーションメッセージが送信されます。それ以降は、Baltimore 証明書を破棄しても構いません。

BaltimoreCyberTrustRoot 証明書を削除した場合はどうなりますか?

Azure Database for MySQL サーバーへの接続時に、接続エラーが発生し始めます。 接続を維持するには、BaltimoreCyberTrustRoot 証明書を使用してもう一度 SSL を構成する必要があります。

よく寄せられる質問

SSL/TLS を使用していない場合でも、ルート CA を更新する必要がありますか?

SSL/TLS を使用していない場合は、何も行う必要は必要ありません。

単一サーバー インスタンスのルート証明書の変更はいつ行われますか?

BaltimoreCyberTrustRoot から DigiCertGlobalRootG2 への移行は、2022 年 10 月からフェーズごとに Azure のすべてのリージョンで実行されます。 サーバーへの接続が失われることがないことを確認するには、「 結合 CA 証明書の作成」で説明されているステップに従います。 組み合わされた CA 証明書を使用すると、これら 2 つの証明書のいずれかを使用して、SSL 経由で単一サーバー インスタンスに接続できます。

BaltimoreCyberTrustRoot 証明書を完全に削除できるのはいつですか?

すべての Azure リージョンで移行が正常に完了すると、単一の CA DigiCertGlobalRootG2 証明書を変更しても問題ないというコミュニケーション投稿が送信されます。

SSL 経由で単一サーバー インスタンスに接続するときに CA 証明書を指定しませんが、上記 のステップを 実行する必要はありますか?

信頼されたルート ストアに両方の CA ルート証明書がある場合は、それ以上のアクション操作は必要ありません。 これは、ルート CA 証明書にアクセスするためにローカル ストアを使用するクライアント ドライバーにも適用されます。

SSL/TLS を使用している場合、ルート CA を更新するには、データベース サーバーを再起動する必要がありますか?

いいえ。新しい証明書を使い始めるために、データベース サーバーを再起動する必要はありません。 このルート証明書はクライアント側の変更であるため、受信クライアント接続では、確実にデータベース サーバーに接続できるように新しい証明書を使用する必要があります。

ルート証明書の検証で SSL/TLS を使用しているかどうかはどうすればわかりますか?

お使いの接続で、接続文字列を確認するとルート証明書が検証されているかどうかを、確認することができます。

  • 接続文字列に sslmode=verify-ca または sslmode=verify-identity が含まれている場合は、証明書を更新する必要があります。
  • 接続文字列に sslmode=disablesslmode=allowsslmode=prefer、または sslmode=require が含まれている場合は、証明書を更新する必要はありません。
  • 接続文字列で sslmode が指定されていない場合は、証明書を更新する必要はありません。

接続文字列が抽象化されるクライアントを使用している場合、証明書が検証されているかどうかを確認するには、クライアントのドキュメントを参照してください。

Azure Database for MySQL で App Service を使用している場合は、どのような影響がありますか?

Azure Database for MySQL へ接続している Azure App Service では、アプリケーションで SSL をどのように使用しているかによって、次の 2 つのシナリオが考えられます。

  • この新しい証明書は、プラットフォーム レベルで App Service に追加されています。 App Service プラットフォームに含まれる SSL 証明書をアプリケーションで使用している場合は、何もする必要はありません。 これは最も一般的なシナリオです。
  • SSL 証明書ファイルへのパスを明示的にコードに含める場合は、新しい証明書をダウンロードし、上記のように結合された証明書を作成し、証明書ファイルを使用する必要があります。 このシナリオの良い例は、App Service ドキュメントで共有されているように、App Service でカスタム コンテナーを使用する場合です。 このシナリオは一般的ではありませんが、使用しているユーザーもいます。

Azure Database for MySQL で Azure Kubernetes Services (AKS) を使用している場合は、どのような影響がありますか?

Azure Kubernetes Services (AKS) を使用して Azure Database for MySQL に接続しようとしている場合は、専用の顧客ホスト環境からのアクセスに似ています。 こちらの手順を参照してください。

Azure Data Factory を使用して Azure Database for MySQL に接続している場合は、どのような影響がありますか?

Azure Integration Runtime を使用しているコネクタでは、Azure でホストされる環境内の Windows 証明書ストアの証明書が利用されています。 これらの証明書は、新しく適用される証明書と既に互換性があるため、何もする必要はありません。

接続文字列に SSL 証明書ファイルへのパスを明示的に含めるセルフホステッド統合ランタイムを使用しているコネクタでは、新しい証明書をダウンロードし、それを使用するように接続文字列を更新する必要があります。

この変更では、データベース サーバーのメンテナンス ダウンタイムを計画する必要がありますか?

いいえ。 この変更は、データベース サーバーに接続するためにクライアント側でのみ行うものなので、この変更のためにデータベース サーバーでメンテナンスのダウンタイムは必要ありません。

Microsoft はどのくらいの頻度で証明書を更新しますか、または有効期限ポリシーはどのようなものですか?

Azure Database for MySQL によって使用されるこれらの証明書は、信頼された証明機関 (CA) によって提供されます。 そのため、これらの証明書のサポートは、CA によるこれらの証明書のサポートに関連付けられています。 BaltimoreCyberTrustRoot 証明書は 2025 年に有効期限が切れる予定であるため、Microsoft は有効期限が切れる前に証明書の変更を実行する必要があります。 また、これらの事前定義された証明書に予期しないバグがある場合、Microsoft は、サービスが常に安全で準拠していることを確保するために、2021 年 2 月 15 日に実行された変更と同様に、できるだけ早く証明書のローテーションを行う必要があります。

読み取りレプリカを使用している場合、この更新を行う必要があるのはソース サーバーだけですか? または、読み取りレプリカでも必要ですか?

この更新はクライアント側の変更であるため、レプリカ サーバーからデータを読み取るためにクライアントを使用している場合は、それらのクライアントにも変更を適用する必要があります。

データイン レプリケーションを使用している場合は、何かアクションを実行する必要がありますか?

データイン レプリケーションを使用して Azure Database for MySQL に接続している場合は、次の 2 つの点を考慮する必要があります。

  • 仮想マシン (オンプレミスまたは Azure 仮想マシン) から Azure Database for MySQL へのデータ レプリケーションの場合は、レプリカを作成するために SSL が使用されているかどうかを確認する必要があります。 SHOW SLAVE STATUS を実行し、次の設定を確認します。

    Master_SSL_Allowed            : Yes
    Master_SSL_CA_File            : ~\azure_mysqlservice.pem
    Master_SSL_CA_Path            :
    Master_SSL_Cert               : ~\azure_mysqlclient_cert.pem
    Master_SSL_Cipher             :
    Master_SSL_Key                : ~\azure_mysqlclient_key.pem
    

    CA_file、SSL_Cert、SSL_Key に対して証明書が提供されていることがわかった場合は、新しい証明書を追加してファイルを更新し、結合された証明書ファイルを作成する必要があります。

  • 2 つの Azure Database for MySQL サーバー間のデータ レプリケーションの場合は、CALL mysql.az_replication_change_master を実行してレプリカをリセットし、最後のパラメーター master_ssl_ca で新しいデュアル ルート証明書を指定する必要があります。

SSL が使用されているかどうかを判断するためのサーバー側クエリはありますか?

サーバーへの接続に SSL 接続を使用しているかどうかを確認するには、SSL の検証に関する記事を参照してください。

証明書ファイルに DigiCertGlobalRootG2 が既に含まれている場合、必要なアクションはありますか?

いいえ。 証明書ファイルに DigiCertGlobalRootG2 が既に含まれている場合、必要なアクションはありません。

enableRedirect で PHP ドライバーを使用している場合、ルート証明書を更新する必要があるのはなぜですか?

コンプライアンス要件に対処するために、ホスト サーバーの CA 証明書が BaltimoreCyberTrustRoot から DigiCertGlobalRootG2 に変更されました。 この更新により、PHP クライアント ドライバーと enableRedirect を使用したデータベース接続は、クライアント デバイスが証明書の変更と新しいルート CA の詳細を認識しないため、サーバーに接続できなくなります。 PHP リダイレクト ドライバーを使用するクライアント デバイスは、ゲートウェイをバイパスしてホスト サーバーに直接接続します。 Azure Database for MySQL 単一サーバーのアーキテクチャの詳細については、このリンクを参照してください。

さらに質問がある場合はどうすればよいですか?

質問がある場合は、Microsoft Q&A でコミュニティの専門家から回答を得ることができます。 サポート プランに加入していて技術的な支援が必要な場合は、お問い合わせください