為了維護我們的安全性和合規性標準,我們將從 2025 年 9 月 1 日開始變更適用於 MySQL 的 Azure 資料庫彈性伺服器的根證書。
目前的根証書 DigiCert 全域根 CA 會由兩個新的根証書取代:
- DigiCert 全域根 G2
- Microsoft RSA 根憑證授權機構 2017
如果您使用傳輸層安全性(TLS)搭配根證書驗證,則必須在過渡期間安裝所有三個根證書。 變更所有憑證之後,您可以從存放區中移除舊的 SHA-1 根憑證 DigiCert 全域根 CA。 如果您未在 2025 年 9 月 1 日之前新增憑證,則與資料庫的連線 會失敗。
本文提供新增兩個新的根證書的說明,以及常見問題的解答。
Note
如果繼續使用 SHA-1 是一個障礙,而且您希望在正式發佈之前變更憑證,請遵循 本文中的指示,在客戶端上建立合併的憑證授權單位 (CA) 憑證。 然後開啟支援要求,以更換 Azure Database for MySQL 資料庫的憑證。
為什麼需要根憑證更新?
適用於 MySQL 的 Azure 資料庫 使用者只能使用預先定義的憑證來連線到其 MySQL 伺服器執行個體。 這些憑證是由根證書授權單位所簽署。 目前的憑證是由 DigiCert 全域根 CA 簽署。 它會使用 SHA-1。 由於發現弱點,SHA-1 哈希演算法相當不安全。 它不再符合我們的安全性標準。
我們需要將憑證更換為符合認證標準的根證書授權單位所簽署的憑證,以補救問題。
如何在客戶端上更新根憑證存放區
若要確保應用程式在根證書輪替之後可以連線到適用於 MySQL 的 Azure 資料庫,請更新用戶端上的根證書存儲。 當您使用 SSL/TLS 搭配根憑證驗證時,請更新根憑證存儲區。
下列步驟會引導您完成在您的用戶端上更新根憑證存放區的程序:
下載三個根憑證。 如果您已安裝 DigiCert 全域根 CA 憑證,您可以略過第一次下載:
將下載的憑證新增至用戶端證書存儲。 此流程會隨著客戶端類型而有所不同。
更新 Java 用戶端
請遵循下列步驟來更新用於根證書輪替的Java用戶端憑證。
建立新的受信任根證書存儲區
針對 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 屬性。
更新 .NET 用戶端
請遵循下列步驟來更新您 .NET 用戶端憑證以輪替根憑證。
Windows 上的 .NET
針對 Windows 上的 .NET 使用者,請確定 DigiCert Global Root CA、DigiCert Global Root G2 和 Microsoft RSA 根證書授權機構 2017 存在於 Windows 證書存儲中的 受信任的根證書授權機構 下。 如果有任何憑證不存在,請匯入它。
Linux 上的 .NET
對於使用SSL_CERT_DIR的Linux上的 .NET 使用者,請確定DigiCertGlobalRootCA.crt.pemDigiCertGlobalRootG2.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
步驟
- 建立新的文字檔,並將其儲存為
combined-ca-certificates.pem - 複製並貼上這三個憑證檔案的內容,格式如下:
-----BEGIN CERTIFICATE-----
(Content from DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Content from DigiCertGlobalRootG2.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Content from MicrosoftRSARootCertificateAuthority2017.crt.pem)
-----END CERTIFICATE-----
資料匯入複寫 MySQL
針對同時裝載於 Azure 上主要和複本的資料輸入複寫,您可以以下列格式合併 CA 憑證檔案:
SET @cert = '-----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-----'
呼叫 mysql.az_replication_change_master ,如下所示:
CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mysql-bin.000002', 120, @cert);
Important
重新啟動您的復本伺服器。
