Opis zmian w zmianie głównego urzędu certyfikacji dla pojedynczego serwera usługi Azure Database for PostgreSQL

DOTYCZY: Azure Database for PostgreSQL — pojedynczy serwer

Ważne

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

Usługa Azure Database for PostgreSQL — pojedynczy serwer planuje zmianę certyfikatu głównego od grudnia 2022 r. (12/2022) w ramach standardowej konserwacji i najlepszych rozwiązań w zakresie zabezpieczeń. 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.

Dlaczego wymagana jest aktualizacja certyfikatu głównego?

W przeszłości użytkownicy usługi Azure Database for PostgreSQL mogli używać tylko wstępnie zdefiniowanego certyfikatu do nawiązywania połączenia z serwerem PostgreSQL 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 PostgreSQL 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 Postgres.

Nowy certyfikat jest wdrażany i obowiązywać od grudnia 2022 r. (12.2022 r.).

Jaka zmiana miała zostać przeprowadzona od grudnia 2022 r. (12.2022)?

Od grudnia 2022 r. certyfikat główny BaltimoreCyberTrustRoot jest zastępowany zgodną wersją znaną jako Certyfikat główny DigiCertGlobalRootG2. Jeśli aplikacje korzystają z parametru verify-ca lub verify-full jako wartości parametru sslmode w łączności klienta bazy danych muszą postępować zgodnie z instrukcjami, aby dodać nowe certyfikaty do magazynu certyfikatów w celu utrzymania łączności.

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

Po stronie klienta nie są wymagane żadne zmiany kodu ani aplikacji. Jeśli zastosujesz się do poniższej rekomendacji dotyczącej aktualizacji certyfikatu, nadal będzie można nawiązać połączenie, o ile certyfikat BaltimoreCyberTrustRoot nie zostanie usunięty z połączonego certyfikatu urzędu certyfikacji. Zalecamy, aby nie usuwać certyfikatu BaltimoreCyberTrustRoot z połączonego certyfikatu urzędu certyfikacji do czasu powiadomienia o zachowaniu łączności.

Czy muszę wprowadzić zmiany w certyfikatach klienta

Domyślnie usługa PostgreSQL nie wykonuje żadnej weryfikacji certyfikatu serwera. Oznacza to, że nadal teoretycznie możliwe jest fałszowanie tożsamości serwera (na przykład przez zmodyfikowanie rekordu DNS lub przejęcie adresu IP serwera) bez znajomości klienta. Aby zapobiec wszelkim możliwościom fałszowania, należy użyć weryfikacji certyfikatu SSL na kliencie. Taką weryfikację można ustawić za pośrednictwem klienta aplikacji parametry połączenia wartość trybu ssl — verify-ca lub verify-full. Jeśli zostaną wybrane te wartości trybu ssl, należy postępować zgodnie z instrukcjami w następnej sekcji.

Zalecenie dotyczące aktualizacji certyfikatu klienta

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

  • Opcjonalnie, aby zapobiec przyszłym zakłóceniom, zaleca się również dodanie następujących katalogów głównych do zaufanego magazynu:

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

    • W przypadku użytkowników języka Java (PostgreSQL JDBC) przy użyciu parametru DefaultJavaSSLFactory wykonaj następujące czynności:

      keytool -importcert -alias PostgreSQLServerCACert  -file D:\BaltimoreCyberTrustRoot.crt.pem  -keystore truststore -storepass password -noprompt
      
      keytool -importcert -alias PostgreSQLServerCACert2  -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 (Npgsql) w systemie Windows upewnij się, że firma Baltimore CyberTrust Root i Główna G2 firmy DigiCert istnieją w magazynie certyfikatów systemu Windows, zaufanych głównych urzędach certyfikacji. Jeśli jakiekolwiek certyfikaty nie istnieją, zaimportuj brakujący certyfikat.

      Certyfikat .net usługi Azure Database for PostgreSQL

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

    • W przypadku innych użytkowników klientów postgreSQL można scalić dwa pliki certyfikatów urzędu certyfikacji, takie jak poniższy format


      certyfikat -----BEGIN-----
      (główny urząd certyfikacji 1: BaltimoreCyberTrustRoot.crt.pem)
      -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      (GŁÓWNY URZĄD CERTYFIKACJI2: 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. Po zakończeniu zmiany wyślemy komunikację, po której można bezpiecznie usunąć certyfikat Baltimore.

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

Podczas nawiązywania połączenia z serwerem usługi Azure Database for PostgreSQL mogą pojawić się błędy łączności. 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. Jest 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-full, musisz zaktualizować certyfikat.
  • Jeśli parametry połączenia zawiera sslmode=disable, 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. Aby zrozumieć tryb sslmode bazy danych PostgreSQL, zapoznaj się z opisami trybu SSL w dokumentacji bazy danych PostgreSQL.

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

W przypadku usług Azure App Services, łącząc się z usługą Azure Database for PostgreSQL, możemy mieć dwa możliwe scenariusze i zależy to od tego, jak używasz 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.
  • Jeśli jawnie dołączasz ścieżkę do pliku certyfikatu SSL w kodzie, musisz pobrać nowy certyfikat i zaktualizować kod, aby użyć 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

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

Jeśli próbujesz nawiązać połączenie z usługą Azure Database for PostgreSQL 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.

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

W przypadku łącznika korzystającego z środowiska Azure Integration Runtime łącznik korzysta z 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 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żyć.

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

L.p. Ponieważ ta zmiana znajduje się tylko po stronie klienta, aby nawiązać połączenie z serwerem bazy danych, nie trzeba przestój konserwacji serwera bazy danych dla tej zmiany.

8. Czy w przypadku utworzenia nowego serwera po 30 listopada 2022 r. będzie miało to wpływ?

W przypadku serwerów utworzonych po 30 listopada 2022 r. będziesz nadal używać folderu BaltimoreCyberTrustRoot wraz z nowymi certyfikatami głównymi DigiCertGlobalRootG2 w magazynie certyfikatów SSL klienta bazy danych, aby aplikacje łączyły się przy użyciu protokołu SSL.

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

Te certyfikaty używane przez usługę Azure Database for PostgreSQL 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., dlatego firma Microsoft musi wykonać zmianę certyfikatu przed wygaśnięciem. Ponadto w przypadku nieprzewidzianych usterek w tych wstępnie zdefiniowanych certyfikatów firma Microsoft musi 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.

10. Jeśli używam replik do odczytu, czy muszę wykonać tę aktualizację tylko na serwerze podstawowym, czy repliki 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.

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

Aby sprawdzić, czy używasz połączenia SSL do 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. Jak mogę sprawdzić certyfikat, który jest wysyłany przez serwer?

Istnieje wiele narzędzi, których można użyć. Na przykład firma DigiCert ma przydatne narzędzie , które pokazuje łańcuch certyfikatów dowolnej nazwy serwera. (To narzędzie działa z publicznie dostępnym serwerem; nie może nawiązać połączenia z serwerem znajdującym się w sieci wirtualnej). Innym narzędziem, którego można użyć, jest biblioteka OpenSSL w wierszu polecenia. Ta składnia służy do sprawdzania certyfikatów:

openssl s_client -starttls postgres -showcerts -connect <your-postgresql-server-name>:5432

14. 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, utwórz wniosek o pomoc techniczną:

  • W polu Typ problemu wybierz pozycję Techniczny.
  • W polu Subskrypcja wybierz swoją subskrypcję.
  • W polu Usługa wybierz pozycję Moje usługi, a następnie wybierz pozycję Azure Database for PostgreSQL — pojedynczy serwer.
  • W polu Typ problemu wybierz pozycję Zabezpieczenia.
  • W obszarze Podtyp problemu wybierz pozycję Azure Encryption i szyfrowanie podwójne infrastruktury