Dela via


Uppdatera programklientcertifikat

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, vilket är ett vanligt scenario för program som ansluter till en flexibel Azure Database for PostgreSQL-serverinstans.

Viktigt!

Från och med den 19 januari 2026 och senare planeras Azure-regioner för en TLS/SSL-certifikatrotation med nya mellanliggande CA-certifikat.

Från och med november 2025 planeras dessa regioner för en TLS/SSL-certifikatrotation med nya mellanliggande CA-certifikat

  • Västra centrala USA
  • Östasien
  • UK South

Information om felsökning finns i Problem med att fästa certifikat.

Importera rotcertifikatutfärdarcertifikat i Java Key Store på klienten för scenarier för certifikatanslutning

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 säkerhetsegenskaper, java.home\lib\security, där java.home är runtime-miljökatalogen jre (katalogen i SDK:n eller katalogen på den översta nivån i Java™ 2 Runtime Environment). Du kan använda följande anvisningar för att uppdatera klientens rot-CA-certifikat för scenarier med certifikatspinning med PostgreSQL.

  1. Kontrollera cacerts java-nyckelarkivet för att se om det redan innehåller nödvändiga certifikat. Du kan lista certifikat i Java-nyckelarkivet 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 java-nyckelarkivet på klienten, vilket kan kontrolleras i utdata, bör du fortsätta 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 ett kombinerat CA-certifikatarkiv med alla nödvändiga Rotcertifikatutfärdarcertifikat ingår. Exemplet nedan visar 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/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. Exemplet nedan läser cacerts först in och läser in det i KeyStore-objektet :

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 bör vara annorlunda på den verkliga klienten, eftersom administratörer rekommenderar att du ändrar lösenord omedelbart efter Java-installationen. När vi har läst in KeyStore-objektet kan vi använda klassen PKIXParameters för att läsa 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 rotcertifikatutfärdarcertifikat när du använder klienter i Azure App Services för scenarier för certifikatsanslutning

För Azure App Services, som ansluter till en flexibel Azure Database for PostgreSQL-serverinstans, kan vi ha två möjliga scenarier för uppdatering av klientcertifikat och det beror på hur du använder SSL med ditt program distribuerat till Azure App Services.

  • Nya certifikat läggs till i App Service på plattformsnivå innan ändringar sker i din flexibla Azure Database for PostgreSQL-serverinstans. 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 för att använda den. 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 rotcertifikatutfärdarcertifikat när du använder klienter i Azure Kubernetes Service (AKS) för scenarier med certifikatsbindning

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 rotcertifikatutfärdarcertifikat för .NET-användare (Npgsql) i Windows för scenarier för certifikatsanslutning

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

Uppdatera rotcertifikatutfärdarcertifikat för andra klienter för scenarier för certifikatsanslutning

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-----