Omówienie zmian w zmianie głównego urzędu certyfikacji dla pojedynczego serwera usługi Azure Database for MySQL
DOTYCZY: Azure Database for MySQL — pojedynczy serwer
Ważne
Pojedynczy serwer usługi Azure Database for MySQL znajduje się na ścieżce wycofania. Zdecydowanie zalecamy uaktualnienie do serwera elastycznego usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do serwera elastycznego usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MySQL — pojedynczy serwer?
Pojedynczy serwer usługi Azure Database for MySQL w ramach standardowej konserwacji i najlepszych rozwiązań w zakresie zabezpieczeń zakończy zmianę certyfikatu głównego od października 2022 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ł dotyczy tylko usługi Azure Database for MySQL — pojedynczy serwer . W przypadku usługi Azure Database for MySQL — serwer elastyczny certyfikat wymagany do komunikacji za pośrednictwem protokołu SSL to globalny główny urząd certyfikacji firmy DigiCert
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 MySQL mogą używać tylko wstępnie zdefiniowanego certyfikatu do nawiązywania połączenia z serwerem MySQL znajdującym 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 MySQL 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
Aby uniknąć przerw w działaniu dostępności aplikacji w wyniku nieoczekiwanego odwołania certyfikatów lub zaktualizowania certyfikatu, który został odwołany, wykonaj następujące kroki. Chodzi o utworzenie nowego pliku pem , który łączy bieżący certyfikat i nowy, a podczas weryfikacji certyfikatu SSL zostanie użyta jedna z dozwolonych wartości. Zapoznaj się z następującymi krokami:
Pobierz główny urząd certyfikacji BaltimoreCyberTrustRoot & DigiCertGlobalRootG2 z następujących 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 (MySQL Connector/J) wykonaj następujące czynności:
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
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 programu .NET (MySQL Connector/NET, MySQLConnector) upewnij się, że w magazynie certyfikatów systemu Windows istnieją oba elementy BaltimoreCyberTrustRoot i DigiCertGlobalRootG2. Jeśli jakiekolwiek certyfikaty nie istnieją, zaimportuj brakujący certyfikat.
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 (MySQL Client/MySQL Workbench/C/C++/Go/Python/Ruby/PHP/NodeJS/Perl/Swift) można scalić dwa pliki certyfikatów urzędu certyfikacji w następujący format:
-----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.
Uwaga
Nie usuwaj ani nie zmieniaj certyfikatu Baltimore, dopóki nie zostanie wprowadzona zmiana certyfikatu. Wyślemy komunikację po zakończeniu zmiany, a następnie będzie można bezpiecznie usunąć certyfikat Baltimore.
Co zrobić, jeśli usunęliśmy certyfikat BaltimoreCyberTrustRoot?
Zaczniesz napotkać błędy łączności podczas nawiązywania połączenia z serwerem usługi Azure Database for MySQL. Aby zachować łączność, należy ponownie skonfigurować protokół SSL z certyfikatem BaltimoreCyberTrustRoot .
Często zadawane pytania
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.
Kiedy moje wystąpienie pojedynczego serwera ulegnie zmianie certyfikatu głównego?
Migracja z BaltimoreCyberTrustRoot do DigiCertGlobalRootG2 zostanie przeprowadzona we wszystkich regionach świadczenia usługi Azure od października 2022 r. w fazach. Aby upewnić się, że nie utracisz łączności z serwerem, wykonaj kroki opisane w sekcji Tworzenie połączonego certyfikatu urzędu certyfikacji. Połączony certyfikat urzędu certyfikacji umożliwi łączność za pośrednictwem protokołu SSL z pojedynczym wystąpieniem serwera z jednym z tych dwóch certyfikatów.
Kiedy można całkowicie usunąć certyfikat BaltimoreCyberTrustRoot?
Po pomyślnym zakończeniu migracji we wszystkich regionach platformy Azure wyślemy wpis komunikacyjny, który można bezpiecznie zmienić w celu zmiany pojedynczego certyfikatu DigiCertGlobalRootG2 .
Nie określam żadnego certyfikatu urzędu certyfikacji podczas nawiązywania połączenia z wystąpieniem pojedynczego serwera za pośrednictwem protokołu SSL, czy nadal muszę wykonać kroki wymienione powyżej?
Jeśli masz certyfikat główny urzędu certyfikacji w zaufanym magazynie głównym, nie są wymagane żadne dalsze akcje. Dotyczy to również sterowników klienta, które używają magazynu lokalnego do uzyskiwania dostępu do certyfikatu głównego urzędu certyfikacji.
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. Ten certyfikat główny jest zmianą 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.
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
lubsslmode=verify-identity
, musisz zaktualizować certyfikat. - Jeśli parametry połączenia zawiera
sslmode=disable
wartości ,sslmode=allow
,sslmode=prefer
lubsslmode=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.
Jaki jest wpływ korzystania z usługi App Service z usługą Azure Database for MySQL?
W przypadku usług Azure App Services łączących się z usługą Azure Database for MySQL 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 utworzyć połączony certyfikat, jak wspomniano powyżej, i użyć pliku 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.
Jaki jest wpływ korzystania z usług Azure Kubernetes Services (AKS) z usługą Azure Database for MySQL?
Jeśli próbujesz nawiązać połączenie z usługą Azure Database for MySQL przy użyciu usługi Azure Kubernetes Services (AKS), dostęp z dedykowanego środowiska hosta klientów jest podobny do tego. Zapoznaj się z krokami tutaj.
Jaki jest wpływ używania usługi Azure Data Factory do nawiązywania połączenia z usługą Azure Database for MySQL?
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 i dlatego nie są wymagane żadne działania.
W przypadku łącznika korzystającego z 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ć.
Czy muszę zaplanować przestój konserwacji serwera bazy danych dla tej zmiany?
L.p. Ponieważ zmiana jest dostępna tylko po stronie klienta, aby nawiązać połączenie z serwerem bazy danych, nie trzeba przestój konserwacji serwera bazy danych dla tej zmiany.
Jak często firma Microsoft aktualizuje swoje certyfikaty lub jakie są zasady wygasania?
Te certyfikaty używane przez usługę Azure Database for MySQL 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. Ponadto w przypadku nieprzewidzianych usterek w tych wstępnie zdefiniowanych certyfikatów firma Microsoft będzie musiała dokonać rotacji certyfikatów najwcześniej w sposób podobny do zmiany wykonanej 15 lutego 2021 r., aby zapewnić bezpieczeństwo i zgodność usługi przez cały czas.
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.
Jeśli używam replikacji typu Data-in, czy muszę wykonać jakąkolwiek akcję?
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 zobaczysz, że certyfikat został podany dla CA_file, SSL_Cert i SSL_Key, musisz zaktualizować plik, dodając nowy certyfikat i tworząc połączony plik certyfikatu.
Jeśli replikacja danych znajduje się między dwoma serwerami usługi Azure Database for MySQL, musisz zresetować replikę, wykonując polecenie CALL mysql.az_replication_change_master i podając nowy podwójny certyfikat główny jako ostatni parametr master_ssl_ca.
Czy istnieje zapytanie po stronie serwera w celu określenia, 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.
Czy jest wymagana akcja, jeśli w pliku certyfikatu znajduje się już digiCertGlobalRootG2?
L.p. Nie jest wymagana żadna akcja, jeśli plik certyfikatu ma już plik DigiCertGlobalRootG2.
Dlaczego muszę zaktualizować certyfikat główny, jeśli używam sterownika PHP z funkcją enableRedirect ?
Aby spełnić wymagania dotyczące zgodności, certyfikaty urzędu certyfikacji serwera hosta zostały zmienione z BaltimoreCyberTrustRoot na DigiCertGlobalRootG2. Dzięki tej aktualizacji połączenia bazy danych używające sterownika klienta PHP z usługą enableRedirect nie mogą już łączyć się z serwerem, ponieważ urządzenia klienckie nie wiedzą o zmianie certyfikatu i nowych szczegółach głównego urzędu certyfikacji. Urządzenia klienckie korzystające ze sterowników przekierowania PHP łączą się bezpośrednio z serwerem hosta, pomijając bramę. Skorzystaj z tego linku , aby uzyskać więcej informacji na temat architektury pojedynczego serwera usługi Azure Database for MySQL.
Co zrobić, jeśli mam dalsze pytania?
W przypadku pytań uzyskaj odpowiedzi od ekspertów społeczności w usłudze Microsoft Q&A. Jeśli masz plan pomocy technicznej i potrzebujesz pomocy technicznej, skontaktuj się z nami.