Uppdatera programklientcertifikat i Azure Database for PostgreSQL flexibel server

När du ansluter program till Azure Database for PostgreSQL måste programklienten installera betrodda rotcertifikat. I följande avsnitt får du hjälp med att uppdatera de betrodda rotcertifikaten för program. Den här processen är ett vanligt scenario för program som ansluter till en Azure Database for PostgreSQL flexibel server.

Viktigt!

Microsoft roterar TLS-certifikat för Azure Database for PostgreSQL för att uppdatera certifikatutfärdare och den resulterande certifikatkedjan.

Om klientkonfigurationen använder de rekommenderade konfigurationerna för TLS behöver du inte vidta några åtgärder.

Rotationsschema för mellanliggande certifikat:

  • Uppdateringarna för Azure-regionerna USA, västra centrala och Asien, östra har slutförts.
  • Uppdateringar för regionerna UK South och US Government börjar den 21 januari 2026.
  • Uppdateringar för centrala USA börjar den 26 januari 2026.
  • Uppdateringar för alla andra regioner börjar den 28 januari 2026.

Rotationsschema för rotcertifikat:

  • Uppdateringar för rot-CA-certifikat från DigiCert Global Root CA (G1) till DigiCert Global Root G2 i de kinesiska regionerna börjar den 9 mars 2026.

Importera rot-CA-certifikat i Javas nyckellager på klientsidan för scenarier med certifikatfästning

Anpassade Java-program använder ett standardnyckelarkiv med namnet cacerts, som innehåller certifikat för betrodd certifikatutfärdare (CA). Det kallas också ofta för Java Trust Store. En certifikatfil med namnet cacerts finns i katalogen för säkerhetsegenskaper, , java.home\lib\securitydär java.home är körningsmiljökatalogen jre (katalogen i SDK:t eller katalogen på den översta nivån i Java ™ 2 Runtime Environment). Använd följande riktlinjer för att uppdatera klientens rot-CA-certifikat för scenarier med pinning av klientcertifikat med PostgreSQL:

  1. Kontrollera Java cacerts nyckelarkivet för att se om det redan innehåller nödvändiga certifikat. Du kan visa certifikat i Java nyckelarkiv med hjälp av följande kommando:

      keytool -list -v -keystore ..\lib\security\cacerts > outputfile.txt
    

    Om de nödvändiga certifikaten inte finns i Javas nyckellager på klienten, vilket du kan se i utdata, fortsätt med följande anvisningar:

  2. Skapa en säkerhetskopia av ditt anpassade nyckelarkiv.

  3. Ladda ned certifikat och spara dem lokalt där du kan referera till dem.

  4. Generera en kombinerad CA-certifikatsamling som innehåller alla nödvändiga rot-CA-certifikat. I följande exempel visas hur du använder DefaultJavaSSLFactory för PostgreSQL JDBC-användare.

        keytool -importcert -alias PostgreSQLServerCACert  -file D:\ DigiCertGlobalRootG2.crt.pem   -keystore truststore -storepass password -noprompt
    
        keytool -importcert -alias PostgreSQLServerCACert2  -file "D:\ Microsoft ECC Root Certificate Authority 2017.crt.pem" -keystore truststore -storepass password  -noprompt
    
        keytool -importcert -alias PostgreSQLServerCACert  -file D:\ DigiCertGlobalRootCA.crt.pem   -keystore truststore -storepass password -noprompt
    
  5. Ersätt den ursprungliga nyckellagringsfilen med den nya genererade:

    System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");
    System.setProperty("javax.net.ssl.trustStorePassword","password");
    
  6. Ersätt den ursprungliga ROT-CA PEM-filen med den kombinerade rot-CA-filen och starta om programmet eller klienten.

    Mer information om hur du konfigurerar klientcertifikat med PostgreSQL JDBC-drivrutin finns i den här dokumentationen.

    Anmärkning

    Om du vill importera certifikat till klientcertifikatarkiv kan du behöva konvertera .crt-certifikatfiler till .pem-format. Du kan använda OpenSSL-verktyget för att utföra dessa filkonverteringar.

Hämta en lista över betrodda certifikat i Java Key Store programmatiskt

Som standard lagrar Java de betrodda certifikaten i en särskild fil med namnet cacerts som finns i Java-installationsmappen på klienten. Följande exempel läser cacerts och laddar det i ett KeyStore-objekt:

private KeyStore loadKeyStore() {
    String relativeCacertsPath = "/lib/security/cacerts".replace("/", File.separator);
    String filename = System.getProperty("java.home") + relativeCacertsPath;
    FileInputStream is = new FileInputStream(filename);
    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
    String password = "changeit";
    keystore.load(is, password.toCharArray());

    return keystore;
}

Standardlösenordet för cacerts är changeit, men det bör vara annorlunda på en riktig klient, eftersom administratörer rekommenderar att du ändrar lösenordet omedelbart efter Java installationen. När du har läst in KeyStore-objektet använder du klassen PKIXParameters för att läsa de certifikat som finns.

public void whenLoadingCacertsKeyStore_thenCertificatesArePresent() {
    KeyStore keyStore = loadKeyStore();
    PKIXParameters params = new PKIXParameters(keyStore);
    Set<TrustAnchor> trustAnchors = params.getTrustAnchors();
    List<Certificate> certificates = trustAnchors.stream()
      .map(TrustAnchor::getTrustedCert)
      .collect(Collectors.toList());

    assertFalse(certificates.isEmpty());
}

Uppdatera rot-CA-certifikat när klienter används i Azure App Services, för scenarier med certifikatspinning

För Azure App Tjänster som ansluter till en Azure Database for PostgreSQL flexibel server finns det två möjliga scenarier för uppdatering av klientcertifikat. Scenariot beror på hur du använder SSL med ditt program distribuerat till Azure App Services.

  • Plattformen lägger till nya certifikat i App Service innan ändringar sker i din Azure Database for PostgreSQL flexibla servern. Om du använder de SSL-certifikat som ingår på App Service-plattformen i ditt program behövs ingen åtgärd. Mer information finns i Lägga till och hantera TLS/SSL-certifikat i Azure App Service i Azure App Service-dokumentationen.
  • Om du uttryckligen inkluderar sökvägen till SSL-certifikatfilen i koden måste du ladda ned det nya certifikatet och uppdatera koden så att den används. Ett bra exempel på det här scenariot är när du använder anpassade containrar i App Service enligt beskrivningen i Självstudie: Konfigurera en sidovagnscontainer för anpassad container i Azure App Service i Azure App Service-dokumentationen.

Uppdatera rotcertifikat när du använder klienter i Azure Kubernetes Service (AKS) för scenarier med certifikatfästning

Om du försöker ansluta till Azure Database for PostgreSQL med hjälp av program som finns i Azure Kubernetes Services (AKS) och fäster certifikat, liknar det åtkomst från en dedikerad kunds värdmiljö. Se stegen här.

Uppdatera rot-CA-certifikat för .NET-användare av Npgsql på Windows för scenarier med certifikatspinning

För .NET-användare (Npgsql) på Windows som ansluter till Azure Database for PostgreSQL flexibel server, se till att alla tre Microsoft RSA Root Certificate Authority 2017, DigiCert Global Root G2 och DigiCert Global Root CA finns i Windows certifikatarkiv, Betrodda rotcertifikatutfärdare. Om det inte finns några certifikat importerar du det saknade certifikatet.

Uppdatera rot-CA-certifikat för andra klienter, för scenarier med certifikatspinning

För andra PostgreSQL-klientanvändare kan du sammanfoga två CA-certifikatfiler med följande format:

-----BEGIN CERTIFICATE-----
(Root CA1: DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root CA2: Microsoft ECC Root Certificate Authority 2017.crt.pem)
-----END CERTIFICATE-----