Comment puis-je résoudre les erreurs de fichiers du certificat racine lorsque j'utilise des programmes d'encapsulation des données étrangères et SSL configuré sur verify-full sur Amazon RDS/Aurora PostgreSQL ?

Lecture de 3 minute(s)
0

J'utilise des encapsuleurs FDW (Foreign Data Wrapper) et sslmode défini sur verify-full sur Amazon Relational Database Service (Amazon RDS) exécutant PostgreSQL. Lorsque j'essaie de créer un serveur FDW pour mon instance de base de données, je reçois le message d'erreur « Le fichier de certificat racine "/home/rdsdb/.postgresql/root.crt" n'existe pas ». Comme puis-je corriger cette erreur ?

Brève description

Pour activer la vérification de certificat dans PostgreSQL, sslmode doit être défini sur verify-full. Si sslmode est défini sur verify-full lorsque vous créez un serveur FDW d'une instance Amazon RDS vers une autre, vous recevez une erreur de fichier de certificat racine. Cette erreur est générée sur l'instance de base de données où la commande CREATE SERVER est exécutée. Vous ne pouvez pas accéder directement au filesystemsur une instance Amazon RDS ni installer des certificats d'une autorité de certification. En revanche, mais le certificat racine requis est déjà installé sur l'instance de base de données. Pour rechercher l'emplacement du certificat, exécutez la commande suivante :

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

Pour éliminer cette erreur, pointez la connexion FDW vers le fichier /rdsdbdata/rds-metadata/server-cert.pem lors de la création du serveur.

Résolution

Pour pointer la connexion FDW vers le fichier de certificat racine, exécutez une commande similaire à celle ci-dessous :

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');

Pour vérifier que la connexion fonctionne, créez un mappage d'utilisateur et une table externe :

Remarque : PostgreSQL journalise les mots de passe en texte clair dans les fichiers journaux. Pour éviter cela, consultez Comment empêcher Amazon RDS for PostgreSQL de journaliser mes mots de passe en texte clair dans les fichiers journaux ?

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');

Aucune connexion n'est établie tant que la table est accessible. Pour vérifier que la connexion fonctionne, interrogez la table :

SELECT * from foreign_table ;

Si la connexion FDW aboutit, les données de la table externe sont renvoyées.


Informations connexes

Tâches de gestion courantes pour PostgreSQL sur Amazon RDS

Documentation PostgreSQL pour postgres_fdw

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans