Dela via


Uppdatera TLS-klientcertifikat för programklienter med Azure Database for PostgreSQL – flexibel server

GÄLLER FÖR: Azure Database for PostgreSQL – flexibel server

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

Anpassade Java-program använder ett standardnyckelarkiv, som kallas 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 körningsmiljö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 klientrotcertifikatutfärdarcertifikat för scenarier för fästning av klientcertifikat med PostgreSQL – flexibel server:

  1. Kontrollera cacerts java keystore 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 nödvändiga certifikat inte finns i java-nyckelarkivet på klienten, som kan kontrolleras i utdata, bör du fortsätta med följande anvisningar:

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

  2. Ladda ned certifikat

  3. Generera ett kombinerat CA-certifikatarkiv med båda rotcertifikatutfärdarcertifikaten ingår. Exemplet nedan visar hur du använder DefaultJavaSSLFactory för PostgreSQL JDBC-användare.

    • För anslutning till servrar som distribuerats till Azure Government-molnregioner (US Gov Virginia, US Gov Texas, US Gov Arizona)
    
    
        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
    
    • För anslutning till servrar som distribueras i offentliga Azure-regioner över hela världen
    
         keytool -importcert -alias PostgreSQLServerCACert  -file D:\ DigiCertGlobalRootCA.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
    
  4. 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");
    
  5. 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.

Kommentar

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 nämnts ovan lagrar Java som standard de betrodda certifikaten i en särskild fil med namnet cacerts som finns i Java-installationsmappen på klienten. Exemplet nedan läser först cacerts 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 med Azure Database for PostgreSQL – flexibel server för scenarier med certifikatsanslutning

För Azure App Services, som ansluter till Azure Database for PostgreSQL, 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.

  • Vanligtvis läggs nya certifikat till i App Service på plattformsnivå före ändringar i Azure Database for PostgreSQL – flexibel server. 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 dokumentationen för Azure App Service.
  • 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 det nya certifikatet. Ett bra exempel på det här scenariot är när du använder anpassade containrar i App Service som delas i App Service-dokumentationen

Uppdatera rotcertifikatutfärdarcertifikat när du använder klienter i Azure Kubernetes Service (AKS) med Azure Database for PostgreSQL – flexibel server för scenarier för certifikatsanslutning

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 värdmiljö för dedikerade kunder. Se stegen här.

Uppdatera rotcertifikatutfärdarcertifikat för .NET-användare (Npgsql) i Windows med Azure Database for PostgreSQL – flexibel server för scenarier med certifikatsbindning

För .NET-användare (Npgsql) i Windows bör du ansluta till Azure Database for PostgreSQL – flexibla servrar som distribuerats i Azure Government-molnregioner (US Gov Virginia, US Gov Texas, US Gov Arizona) och se till att både Microsoft RSA Root Certificate Authority 2017 och DigiCert Global Root G2 båda finns i Windows Certificate Store, Betrodda rotcertifikatutfärdare. Om det inte finns några certifikat importerar du det saknade certifikatet.

För .NET-användare (Npgsql) i Windows ser du till att både Microsoft RSA Root Certificate Authority 2017 och DigiCert Global Root CAfinns i Windows Certificate Store, Betrodda rotcertifikatutfärdare, för .NET-användare (Npgsql) i Windows. Om det inte finns några certifikat importerar du det saknade certifikatet.

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

För andra PostgreSQL-klientanvändare kan du sammanfoga två CA-certifikatfiler som det här formatet nedan.



-----BEGIN CERTIFICATE-----
(Root CA1: DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root CA2: Microsoft ECC Root Certificate Authority 2017.crt.pem)
-----END CERTIFICATE-----
  • Lär dig hur du skapar en flexibel Azure Database for PostgreSQL-serverinstans med alternativet Privat åtkomst (VNet-integrering) i Azure-portalen eller Azure CLI.
  • Lär dig hur du skapar en flexibel Azure Database for PostgreSQL-serverinstans med alternativet Offentlig åtkomst (tillåtna IP-adresser) i Azure-portalen eller Azure CLI.