Amazon RDS/Aurora PostgreSQL에서 외부 데이터 래퍼 및 SSL verify-full을 사용할 때 발생하는 루트 인증서 파일 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 5월 26일

PostgreSQL을 실행하는 Amazon Relational Database Service(Amazon RDS)에서 verify-full로 설정된 sslmode와 외부 데이터 래퍼(FDW)를 사용하고 있습니다. DB 인스턴스에 대한 FDW 서버를 생성하려고 하면 다음 오류가 발생합니다. "root certificate file "/home/rdsdb/.postgresql/root.crt" does not exist" 이 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

PostgreSQL에서 인증서 검증을 활성화하려면 sslmodeverify-full로 설정해야 합니다. sslmodeverify-full로 설정된 경우 한 Amazon RDS 인스턴스에서 다른 인스턴스로 FDW 서버를 생성하면 루트 인증서 파일 오류가 발생합니다. 이 오류는 CREATE SERVER 명령을 실행하는 DB 인스턴스에서 생성됩니다. 사용자는 Amazon RDS 인스턴스에서 파일 시스템에 직접 액세스하거나 CA 인증서를 설치할 수 없지만, 필수 루트 인증서는 이미 DB 인스턴스에 설치되어 있습니다. 이 인증서의 위치를 찾으려면 다음 명령을 실행합니다.

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

이 오류를 해결하려면 서버를 생성할 때 FDW 연결에서 /rdsdbdata/rds-metadata/server-cert.pem 파일을 가리키도록 구성합니다.

해결 방법

FDW 연결에서 루트 인증서 파일을 가리키도록 구성하려면 다음과 유사한 명령을 실행합니다.

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

연결이 작동하는지 확인하려면 사용자 매핑 및 외부 테이블을 생성합니다.

참고: PostgreSQL은 암호를 로그 파일에 일반 텍스트로 기록합니다. 이를 방지하려면, Amazon RDS for PostgreSQL이 암호를 로그 파일에서 일반 텍스트로 기록하지 못하게 하려면 어떻게 해야 합니까?를 검토하세요.

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

테이블에 액세스한 후에야 연결이 설정됩니다. 연결이 작동하는지 확인하려면 테이블을 쿼리합니다.

SELECT * from foreign_table ;

FDW 연결에 성공하면 외부 테이블의 데이터가 반환됩니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?