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.
SI APPLICA A: Database di Azure per PostgreSQL - Server flessibile
Importare certificati CA radice nell'archivio chiavi Java nel client, per gli scenari di associazione di certificati
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
si trova nella directory delle proprietà di sicurezza java.home\lib\security, dove java.home è la directory dell'ambiente di runtime (la jre
directory 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 - Server flessibile:
- Controllare
cacerts
l'archivio chiavi Java per verificare se contiene già i certificati necessari. È possibile elencare i certificati nell'archivio chiavi Java usando il comando seguente:
keytool -list -v -keystore ..\lib\security\cacerts > outputfile.txt
Se i certificati necessari non sono presenti nell'archivio chiavi Java nel client, come è possibile controllare nell'output, è consigliabile procedere 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 -noprompt
Sostituire 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.
Nota
Per importare i certificati negli archivi certificati client, potrebbe essere necessario convertire i file con estensione crt del certificato in formato pem. È possibile usare l'utilità OpenSSL per eseguire queste conversioni di file.
Ottenere un elenco di certificati attendibili nell'archivio chiavi Java programmaticamente.
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 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 CA radice quando si usano i client in Servizi app di Azure per scenari di associazione di certificati
Per i servizi App di Azure, connessi a un server flessibile di Database di Azure per PostgreSQL, esistono due possibili scenari relativi all'aggiornamento dei certificati client, e dipende da come SSL viene usato con l'applicazione distribuita nei servizi App di Azure.
- I nuovi certificati vengono aggiunti al servizio app a livello di piattaforma prima che si verifichino modifiche nel server flessibile di Database di Azure per PostgreSQL. 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 CA radice quando si usano i client nel servizio Azure Kubernetes (AKS) per scenari di associazione di certificati
Se si sta provando a connettersi al Database di Azure per PostgreSQL usando applicazioni ospitate nei servizi Azure Kubernetes e aggiungendo certificati, è simile all'accesso da un ambiente host del cliente dedicato. Fare riferimento ai passaggi illustrati qui.
Aggiornare i certificati radice CA per gli utenti di .NET (Npgsql) su Windows, per scenari di associazione di certificati
Per gli utenti di .NET (Npgsql) in Windows, connettersi a Database di Azure per PostgreSQL - Server flessibile, assicurarsi che tutte e tre le Autorità di certificazione radice Microsoft RSA 2017, DigiCert Global Root G2 e Digicert Global Root CA, esistano nell'archivio certificati di Windows, Autorità di certificazione radice attendibili. Se non esistono certificati, importare il certificato mancante.
Aggiornare i certificati CA radice per altri client per scenari di associazione di certificati
Per altri utenti client PostgreSQL, è possibile unire due file di certificato CA usando il formato seguente:
-----BEGIN CERTIFICATE-----
(Root CA1: DigiCertGlobalRootCA.crt.pem)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Root CA2: Microsoft ECC Root Certificate Authority 2017.crt.pem)
-----END CERTIFICATE-----