Informazioni sulle modifiche apportate alla CA radice per Database di Azure per PostgreSQL server singolo

SI APPLICA A: Database di Azure per PostgreSQL - Server singolo

Importante

Database di Azure per PostgreSQL - Server singolo si trova nel percorso di ritiro. È consigliabile eseguire l'aggiornamento a Database di Azure per PostgreSQL - Server flessibile. Per altre informazioni sulla migrazione a Database di Azure per PostgreSQL - Server flessibile, vedere What's happening to Database di Azure per PostgreSQL Single Server?.

Database di Azure per PostgreSQL server singolo che pianifica la modifica del certificato radice a partire Dicembre 2022 (12/2022) come parte delle procedure consigliate per la manutenzione e la sicurezza standard. Questo articolo offre altri dettagli sulle modifiche, sulle risorse interessate e sui passaggi necessari per garantire che l'applicazione mantenga la connettività al server di database.

Perché è necessario aggiornare il certificato radice?

In passato, gli utenti di Database di Azure per PostgreSQL potevano usare solo il certificato predefinito per connettersi al server PostgreSQL, che si trova qui. Tuttavia, il forum del browser autorità di certificazione (CA) ha recentemente pubblicato report di più certificati rilasciati dai fornitori della CA per essere non conformi.

In base ai requisiti di conformità del settore, i fornitori di autorità di certificazione (CA) hanno iniziato a revocare i certificati CA per le CA non conformi, richiedendo ai server di usare certificati rilasciati da CA conformi e firmati da certificati CA da tali CA conformi. Poiché Database di Azure per PostgreSQL usato uno di questi certificati non conformi, è necessario ruotare il certificato alla versione conforme per ridurre al minimo la potenziale minaccia per i server Postgres.

Il nuovo certificato viene implementato e in vigore a partire da dicembre 2022 (12/2022).

Quale modifica è stata pianificata a partire da dicembre 2022 (12/2022)?

A partire da dicembre 2022, il certificato radice BaltimoreCyberTrustRoot viene sostituito con una versione conforme nota come certificato radice DigiCertGlobalRootG2 . Se le applicazioni sfruttano verify-ca o verify-full come valore del parametro sslmode nella connettività client del database devono seguire le istruzioni per aggiungere nuovi certificati all'archivio certificati per mantenere la connettività.

È necessario apportare modifiche al client per mantenere la connettività?

Non sono necessarie modifiche al codice o all'applicazione sul lato client. se si segue la raccomandazione per l'aggiornamento dei certificati riportata di seguito, sarà comunque possibile continuare a connettersi, purché il certificato BaltimoreCyberTrustRoot non venga rimosso dal certificato CA combinato . È consigliabile non rimuovere BaltimoreCyberTrustRoot dal certificato CA combinato fino a quando non si noterà di più per mantenere la connettività.

È necessario apportare modifiche ai certificati client

Per impostazione predefinita, PostgreSQL non esegue alcuna verifica del certificato del server. Ciò significa che è ancora teoricamente possibile eseguire lo spoofing dell'identità del server (ad esempio modificando un record DNS o acquisendo l'indirizzo IP del server) senza che il client sappia. Per evitare eventuali spoofing, è necessario usare la verifica del certificato SSL nel client. Tale verifica può essere impostata tramite il client dell'applicazione stringa di connessione valore della modalità SSL: verify-ca o verify-full. Se si selezionano questi valori in modalità SSL, seguire le istruzioni riportate nella sezione successiva.

Raccomandazione per l'aggiornamento del certificato client

  • Scaricare BaltimoreCyberTrustRoot & DigiCertGlobalRootG2 Root CA dai collegamenti seguenti:

  • Facoltativamente, per evitare interruzioni future, è consigliabile aggiungere anche le radici seguenti all'archivio attendibile:

  • Vengono inclusi un archivio di certificati CA combinato con certificati BaltimoreCyberTrustRoot e DigiCertGlobalRootG2.

    • Per gli utenti Java (PostgreSQL JDBC) che usano DefaultJavaSSLFactory, eseguire:

      keytool -importcert -alias PostgreSQLServerCACert  -file D:\BaltimoreCyberTrustRoot.crt.pem  -keystore truststore -storepass password -noprompt
      
      keytool -importcert -alias PostgreSQLServerCACert2  -file D:\DigiCertGlobalRootG2.crt.pem -keystore truststore -storepass password  -noprompt
      

      Sostituire quindi 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");
    • Per gli utenti di .NET (Npgsql) in Windows, assicurarsi che Baltimore CyberTrust Root e DigiCert Global Root G2 esistano entrambi nell'archivio certificati Windows, autorità di certificazione radice attendibili. Se non esistono certificati, importare il certificato mancante.

      Database di Azure per PostgreSQL certificato .net

    • Per gli utenti di .NET (Npgsql) in Linux usando SSL_CERT_DIR, assicurarsi che BaltimoreCyberTrustRoot e DigiCertGlobalRootG2 esistano entrambi nella directory indicata da SSL_CERT_DIR. Se non esistono certificati, creare il file di certificato mancante.

    • Per altri utenti client PostgreSQL, è possibile unire due file di certificato CA come questo formato di seguito


      -----BEGIN CERTIFICATE-----
      (Root CA1: BaltimoreCyberTrustRoot.crt.pem) -----END CERTIFICATE-----
      -----BEGIN CERTIFICATE-----
      (Root CA2: DigiCertGlobalRootG2.crt.pem)

      -----END CERTIFICATE-----

  • Sostituire il file pem ca radice originale con il file CA radice combinato e riavviare l'applicazione/client.

  • In futuro, dopo aver distribuito il nuovo certificato sul lato server, è possibile modificare il file PEM della CA in DigiCertGlobalRootG2.crt.pem.

Nota

Non rilasciare o modificare il certificato Baltimore fino a quando non viene apportata la modifica del certificato. Si invierà una comunicazione una volta completata la modifica, dopo di che è sicuro per loro di rilasciare il certificato Baltimore.

Cosa accade se è stato rimosso il certificato BaltimoreCyberTrustRoot?

È possibile iniziare a ricevere errori di connettività durante la connessione al server Database di Azure per PostgreSQL. Per mantenere la connettività, è necessario configurare nuovamente SSL con il certificato BaltimoreCyberTrustRoot .

Domande frequenti

1. Se non si usa SSL/TLS, è comunque necessario aggiornare la CA radice?

Non sono necessarie azioni se non si usa SSL/TLS.

2. Se si usa SSL/TLS, è necessario riavviare il server di database per aggiornare la CA radice?

No, non è necessario riavviare il server di database per iniziare a usare il nuovo certificato. Si tratta di una modifica lato client e le connessioni client in ingresso devono usare il nuovo certificato per assicurarsi che possano connettersi al server di database.

3. Ricerca per categorie sapere se si usa SSL/TLS con la verifica del certificato radice?

È possibile identificare se le connessioni verificano il certificato radice esaminando il stringa di connessione.

  • Se il stringa di connessione include sslmode=verify-ca o sslmode=verify-full, è necessario aggiornare il certificato.
  • Se il stringa di connessione include sslmode=disable, sslmode=allow, sslmode=prefero sslmode=require, non è necessario aggiornare i certificati.
  • Se il stringa di connessione non specifica sslmode, non è necessario aggiornare i certificati.

Se si usa un client che astrae il stringa di connessione, esaminare la documentazione del client per capire se verifica i certificati. Per informazioni su PostgreSQL sslmode, vedere le descrizioni della modalità SSL nella documentazione di PostgreSQL.

4. Qual è l'impatto sull'uso di servizio app con Database di Azure per PostgreSQL?

Per i servizi app di Azure, connettersi a Database di Azure per PostgreSQL, è possibile avere due scenari possibili e dipende da come si usa SSL con l'applicazione.

  • Questo nuovo certificato è stato aggiunto a servizio app a livello di piattaforma. Se si usano i certificati SSL inclusi nella piattaforma servizio app nell'applicazione, non è necessaria alcuna azione.
  • 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 usare il nuovo certificato. Un buon esempio di questo scenario è quando si usano contenitori personalizzati in servizio app come condiviso nella documentazione di servizio app

5. Qual è l'impatto se si usano servizio Azure Kubernetes (AKS) con Database di Azure per PostgreSQL?

Se si sta provando a connettersi al Database di Azure per PostgreSQL usando servizio Azure Kubernetes , è simile all'accesso da un ambiente host clienti dedicato. Fare riferimento ai passaggi qui.

6. Qual è l'impatto sull'uso di Azure Data Factory per connettersi a Database di Azure per PostgreSQL?

Per il connettore che usa Azure Integration Runtime, il connettore sfrutta i certificati nell'archivio certificati Windows nell'ambiente ospitato in Azure. Questi certificati sono già compatibili con i certificati appena applicati e pertanto non è necessaria alcuna azione.

Per il connettore che usa il runtime di integrazione self-hosted in cui si include in modo esplicito il percorso del file di certificato SSL nel stringa di connessione, è necessario scaricare il nuovo certificato e aggiornare il stringa di connessione per usarlo.

7. È necessario pianificare un tempo di inattività di manutenzione del server di database per questa modifica?

No. Poiché la modifica in questo caso si trova solo sul lato client per connettersi al server di database, non sono necessari tempi di inattività di manutenzione per il server di database per questa modifica.

8. Se si crea un nuovo server dopo il 30 novembre 2022, l'impatto sarà?

Per i server creati dopo il 30 novembre 2022, si continuerà a usare BaltimoreCyberTrustRoot insieme ai nuovi certificati radice DigiCertGlobalRootG2 nell'archivio certificati SSL del client di database per consentire alle applicazioni di connettersi tramite SSL.

9. Con quale frequenza Microsoft aggiorna i certificati o qual è il criterio di scadenza?

Questi certificati usati da Database di Azure per PostgreSQL vengono forniti da autorità di certificazione (CA) attendibili. Il supporto di questi certificati è quindi associato al supporto di questi certificati da parte della CA. Il certificato BaltimoreCyberTrustRoot è pianificato per scadere nel 2025, quindi Microsoft deve eseguire una modifica del certificato prima della scadenza. Inoltre, se sono presenti bug imprevisti in questi certificati predefiniti, Microsoft deve effettuare la rotazione del certificato al più presto simile alla modifica eseguita il 15 febbraio 2021 per garantire che il servizio sia sempre sicuro e conforme.

10. Se si usano repliche in lettura, è necessario eseguire questo aggiornamento solo nel server primario o nelle repliche in lettura?

Poiché questo aggiornamento è una modifica lato client, se il client usato per leggere i dati dal server di replica, è necessario applicare anche le modifiche per tali client.

11. È disponibile una query sul lato server per verificare se è in uso SSL?

Per verificare se si usa la connessione SSL per connettersi al server, fare riferimento alla verifica SSL.

12. È necessaria un'azione se nel file del certificato è già presente DigiCertGlobalRootG2?

No. Non è necessaria alcuna azione se il file del certificato include già DigiCertGlobalRootG2.

13. Come è possibile controllare il certificato inviato dal server?

Sono disponibili molti strumenti che è possibile usare. Ad esempio, DigiCert ha uno strumento utile che mostra la catena di certificati di qualsiasi nome server. Questo strumento funziona con un server accessibile pubblicamente, ma non può connettersi al server contenuto in una rete virtuale.This tool works with pubblica accessible server; it cannot connect to server that is contained in a virtual network (VNET)). Un altro strumento che è possibile usare è OpenSSL nella riga di comando. È possibile usare questa sintassi per controllare i certificati:

openssl s_client -starttls postgres -showcerts -connect <your-postgresql-server-name>:5432

14. Cosa succede se ho altre domande?

In caso di domande, è possibile contattare gli esperti della community di Microsoft Q&A. Se si dispone di un piano di supporto e si necessita di assistenza tecnica, creare una richiesta di supporto:

  • Per Tipo di problema, selezionare Tecnico.
  • In Sottoscrizione selezionare la sottoscrizione.
  • In Servizio selezionare Servizi personali, quindi selezionare Database di Azure per PostgreSQL - Server singolo.
  • In Tipo di problema selezionare Sicurezza.
  • Per Sottotipo problema selezionare Crittografia di Azure e Crittografia doppia infrastruttura