Come posso risolvere gli errori relativi al file del certificato root principale quando si utilizzano wrapper di dati esterni e verifica completa SSL su Amazon RDS/Aurora PostgreSQL?

2 minuti di lettura
0

Sto utilizzando Foreign Data Wrappers (FDW) e sslmode impostati per la verifica completa su Amazon Relational Database Service (Amazon RDS) che esegue PostgreSQL. Quando provo a creare un server FDW per la mia istanza database, ricevo il seguente messaggio errore: "il file del certificato principale "/home/rdsdb/.postgresql/root.crt" non esiste". Come posso risolvere questo errore?

Breve descrizione

Per abilitare la verifica dei certificati in PostgreSQL, sslmode deve essere impostato su verify-full. Se la modalità sslmode è impostata su verify-full quando crei un server FDW da un'istanza Amazon RDS a un'altra, ricevi il messaggio di errore file del certificato principale. Questo errore viene generato nell'istanza database in cui viene eseguito il comando CREATE SERVER. Non puoi accedere direttamente al filesystem su un'istanza di Amazon RDS o installare i certificati CA, ma il certificato principale richiesto è già installato nell'istanza database. Per trovare la posizione del certificato, esegui il seguente comando:

postgres=> show ssl_cert_file;
ssl_cert_file
-----------------------------------------
/rdsdbdata/rds-metadata/server-cert.pem
(1 row)

Per risolvere questo errore, instrada la connessione FDW al file /rdsdbdata/rds-metadata/server-cert.pem durante la creazione del server.

Risoluzione

Per instradare la connessione FDW al file del certificato principale, esegui un comando simile al seguente:

CREATE SERVER my_foreign_db
foreign data wrapper postgres_fdw
options (host 'my_db.xyz.eu-west-1.rds.amazonaws.com', port '5432', dbname 'my_db', sslmode 'verify-full', sslrootcert '/rdsdbdata/rds-metadata/server-cert.pem');

Per confermare che la connessione funzioni, crea una mappatura utente e una tabella esterna:

Nota: PostgreSQL registra le password nei file log con testo in chiaro. Per evitare che ciò accada, consulta Come posso evitare che Amazon RDS per PostgreSQL registri le mie password in chiaro nei file di log?

CREATE USER MAPPING FOR dbuser SERVER my_foreign_db OPTIONS (user 'dbuser', password 'dbpasswd');

CREATE FOREIGN TABLE foreign_table ( id integer not null, name character(84)) SERVER my_foreign_db OPTIONS (schema_name 'public', table_name 'my_table');

Non viene stabilita alcuna connessione finché non si accede alla tabella. Per confermare che la connessione funzioni, interroga la tabella:

SELECT * from foreign_table ;

Se la connessione FDW ha esito positivo, vengono restituiti i dati della tabella esterna.


Informazioni correlate

Attività comuni di gestione per PostgreSQL su Amazon RDS

Documentazione PostgreSQL per postgres_fdw

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa