¿Cómo puedo resolver los errores del archivo de certificado raíz al utilizar contenedores de datos externos y verify-full de SSL en Amazon RDS/Aurora PostgreSQL?

2 minutos de lectura
0

Estoy usando Foreign Data Wrappers (FDW) y sslmode, que está configurado para verify-full en Amazon Relational Database Service (Amazon RDS) que ejecuta PostgreSQL. Cuando intento crear un servidor FDW para mi instancia de base de datos, aparece el siguiente error: «el archivo de certificado raíz «/home/rdsdb/.postgresql/root.crt» no existe». ¿Cómo puedo solucionar este error?

Descripción breve

Para habilitar la verificación de certificados en PostgreSQL, sslmode debe estar configurado en verify-full. Si sslmode está configurado en verify-full al crear un servidor de FDW a partir de una instancia de Amazon RDS a otra, recibirá el error del archivo de certificado raíz. Este error se genera en la instancia de base de datos en la que se ejecuta el comandoCREATE SERVER. No puede acceder directamente al sistema de archivos de una instancia de Amazon RDS ni instalar los certificados de CA, pero el certificado raíz requerido ya está instalado en la instancia de base de datos. Para encontrar la ubicación del certificado, ejecute el siguiente comando:

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

Para resolver este error, dirija la conexión FDW al archivo /rdsdbdata/rds-metadata/server-cert.pem al crear el servidor.

Resolución

Para dirigir la conexión FDW al archivo de certificado raíz, ejecute un comando similar al siguiente:

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

Para confirmar que la conexión funciona, cree una asignación de usuarios y una tabla externa:

Nota: PostgreSQL registra las contraseñas en texto sin cifrar en los archivos de registro. Para evitarlo, consulte ¿Cómo puedo evitar que Amazon RDS para PostgreSQL registre mis contraseñas en texto sin cifrar en los archivos de registro?

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

No se establece una conexión hasta que se accede a la tabla. Para confirmar que la conexión funciona, consulte la tabla:

SELECT * from foreign_table ;

Si la conexión FDW se realiza correctamente, se devuelven los datos de la tabla externa.


Información relacionada

Tareas de administración comunes para PostgreSQL en Amazon RDS

Documentación de PostgreSQL para postgres_fdw

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años