Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer u toepassingen verbindt met Azure HorizonDB, moet de toepassingsclient vertrouwde basiscertificaten installeren. In de volgende secties wordt uitgelegd hoe u de vertrouwde basiscertificaten voor toepassingen bijwerkt. Dit is een veelvoorkomend scenario voor toepassingen die verbinding maken met een Azure HorizonDB-exemplaar.
Hoofdcertificaten van certificeringsinstanties importeren in de Java KeyStore op de client voor scenario's voor certificaat-pinning
Aangepaste Java-toepassingen maken gebruik van een standaardsleutelarchief, genaamd cacerts, dat vertrouwde ca-certificaten (certificate authority) bevat. Het wordt ook wel Java Trust Store genoemd. Een certificaatbestand met de naam cacerts bevindt zich in de map met beveiligingseigenschappen, java.home\lib\security, waarbij java.home de map van de runtimeomgeving is (de jre map in de SDK of de map op het hoogste niveau van de Java™ 2 Runtime-omgeving).
U kunt de volgende aanwijzingen gebruiken om client-root-CA-certificaten bij te werken voor scenario's met clientcertificaat-verankering met PostgreSQL:
Controleer het
cacertsJava sleutelarchief om te zien of deze al vereiste certificaten bevat. U kunt certificaten in Java sleutelarchief weergeven met behulp van de volgende opdracht:keytool -list -v -keystore ..\lib\security\cacerts > outputfile.txtAls de benodigde certificaten niet aanwezig zijn in het Java sleutelarchief op de client, zoals u in de uitvoer kunt controleren, gaat u verder met de volgende aanwijzingen:
Maak een back-up van uw aangepaste sleutelarchief.
Download certificaten en sla ze lokaal op waar u ernaar kunt verwijzen.
Genereer een gecombineerd CA-certificaatarchief met alle benodigde basis-CA-certificaten. Hieronder ziet u hoe u DefaultJavaSSLFactory gebruikt voor PostgreSQL JDBC-gebruikers.
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 -nopromptVervang het oorspronkelijke sleutelarchiefbestand door het nieuwe gegenereerde bestand:
System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file"); System.setProperty("javax.net.ssl.trustStorePassword","password");Vervang het oorspronkelijke BASIS-CA-pem-bestand door het gecombineerde basis-CA-bestand en start de toepassing/client opnieuw op.
Raadpleeg deze documentatie voor meer informatie over het configureren van clientcertificaten met postgreSQL JDBC-stuurprogramma.
Note
Als u certificaten wilt importeren in clientcertificaatarchieven, moet u certificaat .crt-bestanden mogelijk converteren naar PEM-indeling. U kunt Transport Layer Security (TLS) gebruiken in Azure HorizonDB (preview).
Programmatisch een lijst met vertrouwde certificaten ophalen in Java Key Store
In Java worden de vertrouwde certificaten standaard opgeslagen in een speciaal bestand met de naam cacerts dat zich in de java-installatiemap op de client bevindt.
Voorbeeld hieronder leest cacerts en laadt het in het KeyStore-object:
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;
}
Het standaardwachtwoord cacerts is changeit , maar moet afwijken op echte client, omdat beheerders het wijzigen van het wachtwoord onmiddellijk na de installatie van Java aanbevelen.
Zodra we het KeyStore-object hebben geladen, kunnen we de PKIXParameters-klasse gebruiken om certificaten te lezen die aanwezig zijn.
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());
}
Hoofdcertificaatautoriteitscertificaten bijwerken bij gebruik van clients in Azure-app Services, voor scenario's met certificaatvastzetting
Voor Azure-app services, die verbinding maken met een Azure HorizonDB-exemplaar, kunnen we twee mogelijke scenario's hebben voor het bijwerken van clientcertificaten en is afhankelijk van hoe u SSL gebruikt met uw toepassing die is geïmplementeerd in Azure-app Services.
- Nieuwe certificaten worden toegevoegd aan App Service op platformniveau voordat wijzigingen plaatsvinden in uw Azure HorizonDB-exemplaar. Als u de SSL-certificaten gebruikt die zijn opgenomen in het App Service-platform in uw toepassing, hoeft u niets te doen. Zie TLS/SSL-certificaten toevoegen en beheren in Azure App Service in de Documentatie van Azure App Service voor meer informatie.
- Als u expliciet het pad naar het SSL-certificaatbestand in uw code opgeeft, moet u het nieuwe certificaat downloaden en de code bijwerken om het te gebruiken. Een goed voorbeeld van dit scenario is wanneer u aangepaste containers in App Service gebruikt, zoals beschreven in de zelfstudie: Een sidecarcontainer configureren voor een aangepaste container in Azure App Service, in de Documentatie van Azure App Service.
Certificaten van hoofdcertificeringsinstanties bijwerken bij gebruik van clients in Azure Kubernetes Service (AKS), voor scenario's met certificaat-pinning
Als u verbinding probeert te maken met de Azure HorizonDB met behulp van toepassingen die worden gehost in Azure Kubernetes Services (AKS) en certificaten vastmaken, is dit vergelijkbaar met toegang vanuit de hostomgeving van een toegewezen klant. Raadpleeg de stappen hier.
Certificaten van hoofdcertificeringsinstanties bijwerken voor .NET (Npgsql)-gebruikers op Windows, voor scenario's met certificaat-pinning
Voor .NET (Npgsql)-gebruikers die op Windows verbinding maken met Azure HorizonDB, moet u ervoor zorgen dat alle drie de volgende certificaten aanwezig zijn in het Windows-certificaatarchief onder Vertrouwde basiscertificeringsinstanties: Microsoft RSA Root Certificate Authority 2017, DigiCert Global Root G2 en DigiCert Global Root CA. Als er geen certificaten bestaan, importeert u het ontbrekende certificaat.
Basiscertificaatautoriteitscertificaten voor andere clients bijwerken voor scenario's met certificaat-pinning
Voor andere PostgreSQL-clientgebruikers kunt u twee CA-certificaatbestanden samenvoegen met behulp van de volgende indeling:
-----BEGIN CERTIFICATE-----
(Root CA1: DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root CA2: Microsoft ECC Root Certificate Authority 2017.crt.pem)
-----END CERTIFICATE-----