Azure Database for MySQL シングル サーバーのルート CA の変更について

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

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

注意

この記事は、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 サーバーへの潜在的な脅威を最小限に抑えるために、証明書を準拠バージョンにローテーションする必要がありました。

新しい証明書は 2021 年 2 月 15 日 (2021/02/15) からロールアウトされ、有効になっています。

2021 年 2 月 15 日 (2021/02/15) にどのような変更が行われましたか?

2021 年 2 月 15 日に、既存のお客様が何も変更する必要がなく、サーバーへの接続に影響が生じないように、BaltimoreCyberTrustRoot ルート証明書は同じ BaltimoreCyberTrustRoot ルート証明書準拠バージョンに置き換えられました。 この変更時に、BaltimoreCyberTrustRoot ルート証明書DigiCertGlobalRootG2置き換えられませんでした。この変更は、お客様が変更を行う時間を確保できるように、延期されました。

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

注意

enableRedirect で PHP ドライバーを使用している場合は、「結合された CA 証明書を作成する」で説明されている手順に従って接続エラーを回避してください。

クライアント側では何の変更も必要ありません。 以下の「結合された CA 証明書を作成する」の手順に従った場合、結合された CA 証明書から BaltimoreCyberTrustRoot 証明書が削除されない限り、接続を継続できます。 接続を維持するために、追加の通知があるまでは、結合された CA 証明書に BaltimoreCyberTrustRoot を保持することをお勧めします。

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

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

  1. 以下のリンクから、BaltimoreCyberTrustRoot & DigiCertGlobalRootG2 Root CA のルート 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 証明書を破棄しても構いません。

2021 年 2 月 15 日のこの変更時に、BaltimoreCyberTrustRoot 証明書が DigiCertGlobalRootG2 に置き換えられなかったのはなぜですか?

この変更に関してお客様の準備状況を評価したところ、多くのお客様が、この変更を管理するために追加のリード タイムを必要としていることがわかりました。 お客様に準備のためのリード タイムをより多く提供するために、DigiCertGlobalRootG2 に対する証明書の変更を少なくとも 1 年間延期することを決定しました。これによって、お客様とエンド ユーザーは十分なリード タイムを確保できます。

ユーザーには、前述の手順を使用して結合証明書を作成してサーバーに接続し、Microsoft から削除するよう求めるメッセージが送信されるまでは BaltimoreCyberTrustRoot 証明書を削除しないことをお勧めします。

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

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

よく寄せられる質問

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

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

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

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

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

2021 年 2 月 15 日 (2021/02/15) より後に新しいサーバーを作成する場合、影響はありますか?

2021 年 2 月 15 日 (2021/02/15) より後に作成されたサーバーの場合、SSL を使用して接続するアプリケーションには引き続き BaltimoreCyberTrustRoot が使用されます。

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