Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du ansluter program till Azure HorizonDB 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 Azure HorizonDB-instans.
Importera rotcertifikatutfärdarcertifikat i Java KeyStore i klienten för scenarier med certifikatpinning
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.
Kontrollera Java
cacertsnyckelarkivet 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.txtOm de nödvändiga certifikaten inte finns i Javas nyckellager på klienten, vilket du kan se i utdata, fortsätt med följande anvisningar:
Skapa en säkerhetskopia av ditt anpassade nyckelarkiv.
Ladda ned certifikat och spara dem lokalt där du kan referera till dem.
Generera en kombinerad lagringsplats för CA-certifikat där alla nödvändiga Rot CA-certifikat 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 -nopromptErsä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");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.
Note
Om du vill importera certifikat till klientcertifikatarkiv kan du behöva konvertera .crt-certifikatfiler till .pem-format. Du kan använda Transport Layer Security (TLS) i Azure HorizonDB (förhandsversion).
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 rotcertifikat för certifikatutfärdare när du använder klienter i Azure App Services, för scenarier med certifikatfästning
För Azure App tjänster som ansluter till en Azure HorizonDB-instans 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 Azure HorizonDB-instans. 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ärdares certifikat vid användning av klienter i Azure Kubernetes Service (AKS), för scenarier med certifikatfästning
Om du försöker ansluta till Azure HorizonDB med hjälp av program som finns i Azure Kubernetes Services (AKS) och fäster certifikat, liknar det åtkomsten från en dedikerad kunds värdmiljö. Se stegen här.
Uppdatera rotcertifikat för certifikatutfärdare för användare av .NET (Npgsql) på Windows, för scenarier med certifikatspinning
För .NET-användare (Npgsql) på Windows som ansluter till Azure HorizonDB: kontrollera att alla tre Microsoft RSA Root Certificate Authority 2017, DigiCert Global Root G2 och DigiCert Global Root CA finns i certifikatarkivet i Windows under Betrodda rotcertifikatutfärdare. Om det inte finns några certifikat importerar du det saknade certifikatet.
Uppdatera rotcertifikat för certifikatutfärdare för andra klienter i 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-----