Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Quando si collegano le applicazioni ad Azure HorizonDB, il client dell'applicazione deve installare certificati radice attendibili. Le sezioni seguenti illustrano come aggiornare i certificati radice attendibili per le applicazioni, uno scenario comune per le applicazioni che si connettono a un'istanza di Azure HorizonDB.
Importare i certificati dell'autorità di certificazione radice nel Java KeyStore sul client, per scenari di certificate pinning
Le applicazioni Java scritte in modo personalizzato usano un archivio chiavi predefinito, denominato cacerts, che contiene certificati dell'autorità di certificazione (CA) attendibili. È anche noto come archivio attendibilità Java. Un file di certificati denominato cacerts risiede nella directory delle proprietà di sicurezza java.home\lib\security, dove java.home è la directory dell'ambiente di runtime (la directory jre nell'SDK o la directory di primo livello dell'ambiente di runtime Java™ 2).
È possibile usare le istruzioni seguenti per aggiornare i certificati CA radice del client per gli scenari di associazione di certificati client con PostgreSQL:
Controllare l'archivio
cacertschiavi Java per verificare se contiene già i certificati necessari. È possibile elencare i certificati in Java archivio chiavi usando il comando seguente:keytool -list -v -keystore ..\lib\security\cacerts > outputfile.txtSe i certificati necessari non sono presenti nel keystore Java sul client, come puoi verificare dall'output, procedi con le istruzioni seguenti:
Creare una copia di backup dell'archivio chiavi personalizzato.
Scaricare i certificati e salvarli in locale dove è possibile farvi riferimento.
Generare un archivio certificati CA combinato con tutti i certificati CA radice necessari inclusi. L'esempio seguente mostra l'uso di DefaultJavaSSLFactory per gli utenti JDBC di PostgreSQL.
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 -nopromptSostituire il file dell'archivio chiavi originale con quello nuovo generato:
System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file"); System.setProperty("javax.net.ssl.trustStorePassword","password");Sostituire il file .pem CA radice originale con il file CA radice combinato e riavviare l'applicazione/client.
Per altre informazioni sulla configurazione dei certificati client con il driver JDBC PostgreSQL, vedere questa documentazione.
Note
Per importare i certificati negli archivi certificati client, potrebbe essere necessario convertire i file con estensione CRT del certificato in formato PEM. È possibile usare Transport Layer Security (TLS) in Azure HorizonDB (anteprima).
Ottenere un elenco di certificati attendibili nell'archivio chiavi Java a livello di codice
Per impostazione predefinita, Java archivia i certificati attendibili in un file speciale denominato cacerts che si trova all'interno della cartella di installazione Java nel client.
L'esempio seguente legge innanzitutto cacerts e lo carica nell'oggetto KeyStore:
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;
}
La password predefinita per cacerts è changeit, ma deve essere diversa nel client reale, perché gli amministratori consigliano di modificare la password immediatamente dopo l'installazione di Java.
Dopo aver caricato l'oggetto KeyStore, è possibile usare la classe PKIXParameters per leggere i certificati presenti.
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());
}
Aggiornare i certificati dell'autorità di certificazione radice quando si usano i client in app Azure Services, per scenari di aggiunta di certificati
Per app Azure Services, quando ci si connette a un'istanza di Azure HorizonDB, sono possibili due scenari per l'aggiornamento dei certificati client e ciò dipende da come viene usato SSL con l'applicazione distribuita in app Azure Services.
- I nuovi certificati vengono aggiunti al servizio app a livello di piattaforma prima che si verifichino modifiche nell'istanza di Azure HorizonDB. Se si usano i certificati SSL inclusi nella piattaforma del servizio app nell'applicazione, non è necessaria alcuna azione. Per altre informazioni, vedere Aggiungere e gestire certificati TLS/SSL nel servizio app di Azure, nella documentazione del Servizio app di Azure.
- Se si include in modo esplicito il percorso del file di certificato SSL nel codice, è necessario scaricare il nuovo certificato e aggiornare il codice per usarlo. Un buon esempio di questo scenario è quando si usano contenitori personalizzati nel servizio app, come descritto in Esercitazione: Configurare un contenitore sidecar per un contenitore personalizzato nel servizio app di Azure, nella documentazione del Servizio app di Azure.
Aggiornare i certificati dell'autorità di certificazione radice quando si usano i client in servizio Azure Kubernetes, per scenari di aggiunta di certificati
Se si sta cercando di connettersi ad Azure HorizonDB tramite applicazioni ospitate in Azure Kubernetes Services (AKS) e il pinning dei certificati, la procedura è simile all'accesso da un ambiente host dedicato del cliente. Fare riferimento ai passaggi illustrati qui.
Aggiornare i certificati dell'autorità di certificazione radice per gli utenti .NET (Npgsql) in Windows, per scenari di aggiunta di certificati
Per gli utenti di .NET (Npgsql) su Windows che si connettono ad Azure HorizonDB, assicuratevi che tutti e tre i certificati Microsoft RSA Root Certificate Authority 2017, DigiCert Global Root G2 e DigiCert Global Root CA siano tutti presenti nell'archivio certificati di Windows, Autorità di certificazione radice attendibili. Se non esistono certificati, importare il certificato mancante.
Aggiornare i certificati dell'autorità di certificazione radice per altri client, per scenari di aggiunta di certificati
Per altri utenti client PostgreSQL, è possibile unire due file di certificato CA usando il formato di seguito:
-----BEGIN CERTIFICATE-----
(Root CA1: DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root CA2: Microsoft ECC Root Certificate Authority 2017.crt.pem)
-----END CERTIFICATE-----