Informacje o zmianach w głównym urzędzie certyfikacji dla usługi Azure Database for MariaDB

Ważne

Usługa Azure Database for MariaDB znajduje się na ścieżce wycofania. Zdecydowanie zalecamy przeprowadzenie migracji do usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MariaDB?.

Usługa Azure Database for MariaDB w ramach standardowej konserwacji i najlepszych rozwiązań w zakresie zabezpieczeń zakończy zmianę certyfikatu głównego od marca 2023 r. Ten artykuł zawiera więcej szczegółowych informacji na temat zmian, zasobów, których dotyczy problem, oraz czynności niezbędne do zapewnienia, że aplikacja utrzymuje łączność z serwerem bazy danych.

Uwaga

Ten artykuł zawiera odwołania do terminu slave (element podrzędny), który nie jest już używany przez firmę Microsoft. Po usunięciu terminu z oprogramowania usuniemy go z tego artykułu.

Dlaczego wymagana jest aktualizacja certyfikatu głównego?

Użytkownicy usługi Azure Database for MariaDB mogą używać tylko wstępnie zdefiniowanego certyfikatu do nawiązywania połączenia z serwerem MariaDB, który znajduje się tutaj. Jednak forum przeglądarki urzędu certyfikacji (CA) opublikowało ostatnio raporty o wielu certyfikatach wystawionych przez dostawców urzędu certyfikacji jako niezgodne.

Zgodnie z wymaganiami dotyczącymi zgodności w branży dostawcy urzędu certyfikacji zaczęli odwoływać certyfikaty urzędu certyfikacji dla niezgodnych urzędów certyfikacji, wymagając od serwerów używania certyfikatów wystawionych przez zgodne urzędy certyfikacji i podpisane przez certyfikaty urzędu certyfikacji z tych zgodnych urzędów certyfikacji. Ponieważ usługa Azure Database for MariaDB używała jednego z tych niezgodnych certyfikatów, musieliśmy obrócić certyfikat do zgodnej wersji, aby zminimalizować potencjalne zagrożenie dla serwerów MySQL.

Czy muszę wprowadzić zmiany w kliencie, aby zachować łączność?

Jeśli wykonano kroki wymienione w sekcji Tworzenie połączonego certyfikatu urzędu certyfikacji poniżej, możesz kontynuować nawiązywanie połączenia, o ile certyfikat BaltimoreCyberTrustRoot nie zostanie usunięty z połączonego certyfikatu urzędu certyfikacji. Aby zachować łączność, zalecamy zachowanie certyfikatu BaltimoreCyberTrustRoot w połączonym certyfikacie urzędu certyfikacji do odwołania.

Tworzenie połączonego certyfikatu urzędu certyfikacji

  • Pobierz urząd certyfikacji BaltimoreCyberTrustRoot & DigiCertGlobalRootG2 z poniższych linków:

  • Wygeneruj połączony magazyn certyfikatów urzędu certyfikacji z dołączonymi certyfikatami BaltimoreCyberTrustRoot i DigiCertGlobalRootG2.

    • W przypadku użytkowników języka Java (MariaDB Połączenie or/J) wykonaj następujące polecenie:

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

      Następnie zastąp oryginalny plik magazynu kluczy nowym wygenerowaną:

      • System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
      • System.setProperty("javax.net.ssl.trustStorePassword","password");
    • W przypadku użytkowników platformy .NET (MariaDB Połączenie or/NET, MariaDB Połączenie or) upewnij się, że oba elementy BaltimoreCyberTrustRoot i DigiCertGlobalRootG2 istnieją w magazynie certyfikatów systemu Windows, zaufanych głównych urzędach certyfikacji. Jeśli jakiekolwiek certyfikaty nie istnieją, zaimportuj brakujący certyfikat.

      Azure Database for MariaDB .net cert

    • W przypadku użytkowników platformy .NET w systemie Linux korzystających z SSL_CERT_DIR upewnij się, że zarówno BaltimoreCyberTrustRoot, jak i DigiCertGlobalRootG2 istnieją w katalogu wskazywanym przez SSL_CERT_DIR. Jeśli jakiekolwiek certyfikaty nie istnieją, utwórz brakujący plik certyfikatu.

    • W przypadku innych użytkowników (MariaDB Client/MariaDB Workbench/C/C++/Go/Python/Ruby/PHP/NodeJS/Perl/Swift) można scalić dwa pliki certyfikatów urzędu certyfikacji, takie jak ten format poniżej

    -----BEGIN CERTIFICATE-----
    (Root CA1: BaltimoreCyberTrustRoot.crt.pem)
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    (Root CA2: DigiCertGlobalRootG2.crt.pem)
    -----END CERTIFICATE-----
    
  • Zastąp oryginalny plik pem głównego urzędu certyfikacji połączonym głównym urzędem certyfikacji i uruchom ponownie aplikację/klienta.

  • W przyszłości po wdrożeniu nowego certyfikatu po stronie serwera można zmienić plik pem urzędu certyfikacji na DigiCertGlobalRootG2.crt.pem.

Jeśli nie używam protokołu SSL/TLS, czy nadal muszę zaktualizować główny urząd certyfikacji?

Jeśli nie używasz protokołu SSL/TLS, żadne akcje nie są wymagane.

Co zrobić, jeśli usunęliśmy certyfikat BaltimoreCyberTrustRoot?

Błędy łączności zostaną uruchomione podczas nawiązywania połączenia z serwerem usługi Azure Database for MariaDB. Aby zachować łączność, należy ponownie skonfigurować protokół SSL z certyfikatem BaltimoreCyberTrustRoot .

Często zadawane pytania

1. Jeśli nie używam protokołu SSL/TLS, czy nadal muszę zaktualizować główny urząd certyfikacji?

Jeśli nie używasz protokołu SSL/TLS, żadne akcje nie są wymagane.

2. Jeśli używam protokołu SSL/TLS, czy muszę ponownie uruchomić serwer bazy danych, aby zaktualizować główny urząd certyfikacji?

Nie, nie musisz ponownie uruchamiać serwera bazy danych, aby rozpocząć korzystanie z nowego certyfikatu. Aktualizacja certyfikatu to zmiana po stronie klienta, a przychodzące połączenia klienckie muszą używać nowego certyfikatu, aby upewnić się, że mogą łączyć się z serwerem bazy danych.

3. Jak mogę wiedzieć, czy używam protokołu SSL/TLS z weryfikacją certyfikatu głównego?

Możesz określić, czy połączenia weryfikują certyfikat główny, przeglądając parametry połączenia.

  • Jeśli parametry połączenia zawiera sslmode=verify-ca lub sslmode=verify-identity, musisz zaktualizować certyfikat.
  • Jeśli parametry połączenia zawiera sslmode=disablewartości , sslmode=allow, sslmode=preferlub sslmode=require, nie musisz aktualizować certyfikatów.
  • Jeśli parametry połączenia nie określa trybu sslmode, nie musisz aktualizować certyfikatów.

Jeśli używasz klienta, który wyodrębnia parametry połączenia, zapoznaj się z dokumentacją klienta, aby dowiedzieć się, czy weryfikuje certyfikaty.

4. Jaki jest wpływ na korzystanie z usługi App Service z usługą Azure Database for MariaDB?

W przypadku usług aplikacji platformy Azure łączących się z usługą Azure Database for MariaDB istnieją dwa możliwe scenariusze w zależności od sposobu korzystania z protokołu SSL z aplikacją.

  • Ten nowy certyfikat został dodany do usługi App Service na poziomie platformy. Jeśli używasz certyfikatów SSL zawartych na platformie App Service w aplikacji, nie jest wymagana żadna akcja. Jest to najbardziej typowy scenariusz.
  • Jeśli jawnie dołączasz ścieżkę do pliku certyfikatu SSL w kodzie, musisz pobrać nowy certyfikat i zaktualizować kod, aby używał nowego certyfikatu. Dobrym przykładem tego scenariusza jest użycie kontenerów niestandardowych w usłudze App Service jako udostępnionej w dokumentacji usługi App Service. Jest to nietypowy scenariusz, ale widzieliśmy niektórych użytkowników korzystających z tego.

5. Jaki jest wpływ na korzystanie z usług Azure Kubernetes Services (AKS) z usługą Azure Database for MariaDB?

Jeśli próbujesz nawiązać połączenie z usługą Azure Database for MariaDB przy użyciu usług Azure Kubernetes Services (AKS), jest ona podobna do dostępu ze środowiska hosta dedykowanego klienta. Zapoznaj się z krokami tutaj.

6. Jaki wpływ ma użycie usługi Azure Data Factory do nawiązania połączenia z usługą Azure Database for MariaDB?

W przypadku łącznika korzystającego z środowiska Azure Integration Runtime łącznik używa certyfikatów w magazynie certyfikatów systemu Windows w środowisku hostowanym na platformie Azure. Te certyfikaty są już zgodne z nowo zastosowanymi certyfikatami, więc nie jest wymagana żadna akcja.

W przypadku łącznika przy użyciu własnego środowiska Integration Runtime, w którym jawnie dołączysz ścieżkę do pliku certyfikatu SSL w parametry połączenia, musisz pobrać nowy certyfikat i zaktualizować parametry połączenia, aby go używać.

7. Czy muszę zaplanować przestój konserwacji serwera bazy danych dla tej zmiany?

L.p. Ponieważ ta zmiana znajduje się tylko po stronie klienta w celu nawiązania połączenia z serwerem bazy danych, nie ma przestoju konserwacji wymaganego dla serwera bazy danych dla tej zmiany.

8. Jak często firma Microsoft aktualizuje swoje certyfikaty lub jakie są zasady wygasania?

Te certyfikaty używane przez usługę Azure Database for MariaDB są udostępniane przez zaufane urzędy certyfikacji. Dlatego obsługa tych certyfikatów jest powiązana z obsługą tych certyfikatów przez urząd certyfikacji. Certyfikat BaltimoreCyberTrustRoot ma wygasnąć w 2025 r., więc firma Microsoft będzie musiała wykonać zmianę certyfikatu przed wygaśnięciem.

9. Jeśli używam replik do odczytu, czy muszę wykonać tę aktualizację tylko na serwerze źródłowym, czy replikach do odczytu?

Ponieważ ta aktualizacja jest zmianą po stronie klienta, jeśli klient używany do odczytu danych z serwera repliki, należy również zastosować zmiany dla tych klientów.

10. Czy jeśli używam replikacji typu data-in, czy muszę wykonać dowolną akcję?

  • Jeśli replikacja danych pochodzi z maszyny wirtualnej (lokalnej lub maszyny wirtualnej platformy Azure) do usługi Azure Database for MySQL, musisz sprawdzić, czy protokół SSL jest używany do tworzenia repliki. Uruchom polecenie SHOW SLAVE STATUS (POKAŻ STAN NIEWOLNIKA) i sprawdź następujące ustawienie.

    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
    

Jeśli używasz replikacji typu data-in w celu nawiązania połączenia z usługą Azure Database for MySQL, należy wziąć pod uwagę dwie kwestie:

  • Jeśli replikacja danych pochodzi z maszyny wirtualnej (lokalnej lub maszyny wirtualnej platformy Azure) do usługi Azure Database for MySQL, musisz sprawdzić, czy protokół SSL jest używany do tworzenia repliki. Uruchom polecenie SHOW SLAVE STATUS (POKAŻ STAN NIEWOLNIKA) i sprawdź następujące ustawienie.

    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
    

    Jeśli widzisz, że certyfikat jest udostępniany dla CA_file, SSL_Cert i SSL_Key, należy zaktualizować plik przez dodanie nowego certyfikatu i utworzenie połączonego pliku certyfikatu.

  • Jeśli replikacja danych znajduje się między dwiema usługami Azure Database for MySQL, musisz zresetować replikę, wykonując mysql.az_replication_change_master CALL i podając nowy podwójny certyfikat główny jako ostatni parametr master_ssl_ca.

11. Czy mamy zapytanie po stronie serwera, aby sprawdzić, czy jest używany protokół SSL?

Aby sprawdzić, czy używasz połączenia SSL w celu nawiązania połączenia z serwerem, zapoznaj się z weryfikacją protokołu SSL.

12. Czy jest wymagana akcja, jeśli mam już digiCertGlobalRootG2 w moim pliku certyfikatu?

L.p. Nie jest wymagana żadna akcja, jeśli plik certyfikatu ma już plik DigiCertGlobalRootG2.

13. Co zrobić, jeśli mam dalsze pytania?

Jeśli masz pytania, poszukaj odpowiedzi od ekspertów ze społeczności w witrynie Microsoft Q&A. Jeśli masz plan pomocy technicznej i potrzebujesz pomocy technicznej, skontaktuj się z nami.