セキュリティとコンプライアンスの標準を維持するために、2025 年 7 月 31 日以降、Azure Database for MySQL フレキシブル サーバーのルート証明書の変更を開始します。
現在のルート証明書 DigiCert グローバル ルート CA は、次の 2 つの新しい証明書に置き換えられます。
- DigiCert Global Root G2
- Microsoft RSA Root Certificate Authority 2017
ルート証明書の検証でトランスポート層セキュリティ (TLS) を使用している場合は、移行期間中に 3 つのルート証明書がすべてインストールされている必要があります。 すべての証明書が変更されたら、古い SHA-1 ルート証明書 DigiCert グローバル ルート CA を ストアから削除できます。 既存のストアに 2 つの新しい証明書を追加します。 2025 年 7 月 31 日より前に新しい証明書を追加しないと、データベースへの接続は 失敗します。
この記事では、2 つの新しいルート証明書を追加する方法について詳しく説明します。 変更に関する情報およびよく寄せられる質問への回答
注
SHA-1 の継続的な使用が阻害要因であり、一般的なロールアウトの前に証明書を変更する場合は、 この記事の手順に従って、クライアントで統合証明機関 (CA) 証明書を作成します。 次に、Azure Database for MySQL の証明書をローテーションするサポート 要求を開きます。
なぜルート証明書の更新が必要なのですか?
Azure Database for MySQL ユーザーは、MySQL サーバー インスタンスに接続するには、定義済みの証明書を使用するしかありません。 これらの証明書は、ルート証明機関によって署名されます。 現在の証明書は DigiCert グローバル ルート CA によって署名されます。 これは SHA-1 に基づいています。 SHA-1 ハッシュ アルゴリズムは、検出された脆弱性により、かなり安全ではありません。 セキュリティ標準に準拠しなくなりました。
問題を修復するには、準拠しているルート証明機関によって署名された証明書に証明書をローテーションする必要があります。
クライアントのルート証明書ストアを更新する方法
ルート証明書のローテーション後にアプリケーションが Azure Database for MySQL に接続できるようにするには、クライアントのルート証明書ストアを更新する必要があります。 これは、ルート証明書の検証で SSL/TLS を使用している場合に必要です。
次の手順では、クライアント上のルート証明書ストアを更新するプロセスについて説明します。
3 つのルート証明書をダウンロードします。 DigiCert グローバル ルート CA 証明書をインストールしている場合は、最初のダウンロードをスキップできます。
ダウンロードした証明書をクライアント証明書ストアに追加します。 プロセスはクライアントの種類によって異なります
Java ユーザーの場合は、次のコマンドを実行して、新しい信頼されたルート証明書ストアを作成します。
keytool -importcert -alias MySqlFlexServerCACert -file digiCertGlobalRootCA.crt.pem -keystore truststore -storepass password -noprompt keytool -importcert -alias MySqlFlexServerCACert2 -file digiCertGlobalRootG2.crt.pem -keystore truststore -storepass password -noprompt keytool -importcert -alias MicrosoftRSARootCert2017 -file MicrosoftRSARootCertificateAuthority2017.crt -keystore truststore -storepass password -noprompt
次に、元のキーストア ファイルを新しく生成されたキーストア ファイルに置き換えます。
System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
System.setProperty("javax.net.ssl.trustStorePassword","password");
Java ユーザーの場合は、次のコマンドを実行して、新しい信頼されたルート証明書を既存の信頼されたルート証明書ストアに追加します。
keytool -importcert -alias MySqlFlexServerCACert2 -file digiCertGlobalRootG2.crt.pem -keystore truststore -storepass password -noprompt keytool -importcert -alias MicrosoftRSARootCert2017 -file MicrosoftRSARootCertificateAuthority2017.crt -keystore truststore -storepass password -noprompt
既存のキーストアを更新する場合は、
javax.net.ssl.trustStore
プロパティとjavax.net.ssl.trustStorePassword
プロパティを変更する必要はありません。Windows 上の .NET ユーザーの場合は、 DigiCert Global Root CA、 DigiCert Global Root G2 、 Microsoft RSA Root Certificate Authority 2017 が 、信頼されたルート証明機関の下の Windows 証明書ストアに存在することを確認します。 証明書が存在しない場合は、インポートします。
SSL_CERT_DIR
を使用している Linux 上の .NET ユーザーの場合は、DigiCertGlobalRootCA.crt.pem
、DigiCertGlobalRootG2.crt.pem
、Microsoft RSA Root Certificate Authority 2017.crt.pem
が、SSL_CERT_DIR
で示されているディレクトリに存在することを確認します。 証明書が存在しない場合は、不足している証明書ファイルを作成します。次のコマンドを実行して、
Microsoft RSA Root Certificate Authority 2017.crt
証明書を PEM 形式に変換します。openssl x509 -inform der -in MicrosoftRSARootCertificateAuthority2017.crt -out MicrosoftRSARootCertificateAuthority2017.crt.pem
他の (MySQL Workbench、C、C++、Go、Python、Ruby、PHP、Node.js、Perl、または Swift) ユーザーの場合は、次の形式で CA 証明書ファイルをマージできます。
-----BEGIN CERTIFICATE----- (Root CA1:DigiCertGlobalRootCA.crt.pem) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Root CA2: DigiCertGlobalRootG2.crt.pem) -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- (Root CA3: .crt.pem) -----END CERTIFICATE-----
ルート証明書の検証で SSL/TLS を使用しているかどうかはどうすればわかりますか?
接続文字列を確認することで、接続でルート証明書を確認するかどうかを確認できます。
- 接続文字列に
sslmode=verify-ca
またはsslmode=verify-identity
が含まれている場合は、信頼されたルート証明書を更新する必要があります。 - 接続文字列に
sslmode=disable
、sslmode=allow
、sslmode=prefer
、またはsslmode=require
が含まれている場合は、信頼されたルート証明書を更新する必要はありません。 - 接続文字列で
sslmode
が指定されていない場合は、証明書を更新する必要はありません。
接続文字列が抽象化されるクライアントを使用している場合、証明書が検証されているかどうかを確認するには、クライアントのドキュメントを参照してください。
サーバー側クエリを使用して、SSL を使用しているかどうかを確認することはできますか?
SSL 接続を使用してサーバーに接続しているかどうかを確認するには、「 TLS/SSL 接続の確認」を参照してください。
よく寄せられる質問
DigiCert グローバル ルート CA 証明書を削除した場合
Microsoft の証明書ローテーションの前に証明書を削除すると、接続は失敗します。 DigiCert グローバル ルート CA 証明書をクライアント証明書ストアに追加し直して、接続を復元します。
DigiCert グローバル ルート G2 証明書をダウンロードした後に MySQL 接続が確立されるようにするにはどうすればよいですか?
ルート証明書が変更されると、新しく生成された証明書がサーバーにプッシュダウンされます。 次にサーバーを再起動すると、新しい証明書が使用されます。 接続の問題が発生した場合は、上記の手順で実行ミスがないか確認してください。
SSL/TLS を使用していない場合でも、ルート証明書を更新する必要がありますか?
いいえ。 SSL/TLS を使用していない場合は、アクションを実行する必要はありません。
SSL/TLS を使用している場合は、データベース サーバーを再起動してルート証明書を更新する必要がありますか?
いいえ。 SSL/TLS を使用している場合は、新しい証明書の使用を開始するためにデータベース サーバーを再起動する必要はありません。
証明書の更新はクライアント側の変更です。 受信クライアント接続では、新しい証明書を使用して、データベース サーバーに接続できるようにする必要があります。
この変更では、データベース サーバーのメンテナンスのダウンタイムを計画する必要がありますか?
いいえ。 変更はデータベース サーバーに接続するためにクライアント側でのみ行われるため、データベース サーバーのメンテナンスダウンタイムは必要ありません。
ルート証明書のローテーションのロールバック計画はありますか?
証明書のローテーション後にアプリケーションで問題が発生した場合は、ユース ケースに応じて、組み合わせた証明書または SHA-2 ベースの証明書を再インストールして証明書ファイルを置き換えます。 変更は必須であるため、変更をロールバックしないことをお勧めします。
Azure Database for MySQL で使用される証明書は信頼できますか?
Azure Database for MySQL で使用される証明書は、信頼された証明機関から取得されます。 これらの証明書のサポートは、CA が提供するサポートに基づいています。
DigiCert グローバル ルート CA 証明書で安全性の低い SHA-1 ハッシュ アルゴリズムを使用すると、Azure Database for MySQL に接続するアプリケーションのセキュリティが損なわれます。 そのため、証明書の変更を実行する必要があります。
DigiCert グローバル ルート G2 証明書は、単一サーバー展開オプションで使用したものと同じ証明書ですか?
はい。 DigiCert グローバル ルート G2 証明書 (Azure Database for MySQL の SHA-2 ベースのルート証明書) は、単一サーバーデプロイ オプションで使用したものと同じ証明書です。
読み取りレプリカを使用している場合は、ソース サーバーまたは読み取りレプリカでのみこの更新を実行する必要がありますか?
この更新はクライアント側の変更であるため、複数のクライアントがレプリカ サーバーからデータを読み取る場合は、それらのクライアントにも変更を適用する必要があります。
データイン レプリケーションを使用している場合は、何かアクションを実行する必要がありますか?
データイン レプリケーションを使用して Azure Database for MySQL に接続し、データ レプリケーションが 2 つの Azure Database for MySQL データベース間にある場合は、CALL mysql.az_replication_change_master
を実行してレプリカをリセットする必要があります。 最後のパラメーターとして、3 つのデュアルルート証明書を 指定master_ssl_ca。
証明書ファイルに既に DigiCert Global Root G2
と Microsoft Root Certificate Authority 2017
がある場合は、何らかのアクションを実行する必要がありますか?
いいえ。 証明書ファイルに既に DigiCert Global Root G2
証明書と Microsoft Root Certificate Authority 2017
証明書がある場合は、何も行う必要はありません。
その他の質問がある場合はどうすればよいですか?
それでも質問がある場合は、 Microsoft Q&A のコミュニティ エキスパートから回答を得ることができます。