Postgres 연결에 SSL을 활성화하는 방법
SSL 활성화에 대해 안내하는 다른 블로그 게시물이 있기 때문에 이 글은 저를 위한 스크래치 패드에 가깝습니다. 그러나 이것들은 내가 원하는 것과 정확히 일치하지 않았습니다.
이 블로그 게시물은 개념 증명과 같은 Postgres용 SSL 설정을 빠르고 간단하게 설명합니다. 이 블로그 게시물은 공식적으로 서명된 인증서와 신중하게 강화된 SSL 암호를 사용하는 SSL 설정을 설명하지 않습니다.
첫 번째 단계: 인증서
SSL의 경우 암호화 키(인증서)와 암호 해독 키(키)가 있어야 합니다. SSL 인증서가 작동하는 방식은 인증서를 만들 때 서명 기관('인증 기관'이라고 함)이라는 특별한 기능을 가진 또 다른 암호화 및 암호 해독 조합이 포함되어야 한다는 것입니다. 이렇게 하면 신뢰하기로 선택한 서명 기관에서 서명한 경우 인증서가 합법적인 것으로 판단될 수 있으므로 대부분의 운영 체제 SSL 설치에는 미리 설정된 신뢰할 수 있는 인증 기관 인증서 번들과 함께 제공됩니다.
빠르고 간단한 설정을 위해 여전히 기관에서 인증서 서명을 수행해야 합니다. 우리만이 기관 인증서를 직접 생성합니다. 자신의 인증서에 서명하는 이 설정은 매우 논리적으로 '자체 서명된 인증서'로 명명됩니다. 이는 개인 기관 별칭에 대해 알지 못하는 클라이언트가 해당 인증서를 기관으로 설정하면 오류가 발생한다는 단점이 있습니다.
그러나 테스트 환경을 제어할 수 있는 경우 클라이언트를 자체 인증 기관(인증서를 통해)으로 가리킬 수 있기 때문에 문제가 되지 않습니다.
다음은 인증 기관(CA) 키와 인증서를 생성한 다음 서버 키와 csr(인증서 서명 요청)을 생성한 다음 요청에 서명하여 인증서를 생성하는 명령(Linux용)입니다.
--CA
openssl genrsa 2048 > ca.key
openssl req -new -x509 -nodes -days 365000 -key ca.key -out ca.cert
--server
openssl req -newkey rsa:2048 -nodes -days 365000 -keyout server.key -out server.csr
openssl x509 -req -days 365000 -set_serial 01 -in server.csr -out server.cert -CA ca.cert -CAkey ca.key
몇 가지 세부 정보를 입력해야 합니다. CN 별칭 일반 이름은 호스트 이름으로 설정해야 합니다.
그 결과 다음 파일이 생성됩니다.
--CA
openssl genrsa 2048 > ca.key
openssl req -new -x509 -nodes -days 365000 -key ca.key -out ca.cert
--server
openssl req -newkey rsa:2048 -nodes -days 365000 -keyout server.key -out server.csr
openssl x509 -req -days 365000 -set_serial 01 -in server.csr -out server.cert -CA ca.cert -CAkey ca.key
두 번째 단계: postgreSQL 구성
SSL 관련 파일을 암호화에 사용하려면 포스트마스터가 사용할 수 있어야 합니다.
ssl = on
ssl_ca_file = '/var/lib/pgsql/11/data/ssl/ca.cert'
ssl_cert_file = '/var/lib/pgsql/11/data/ssl/server.cert'
ssl_key_file = '/var/lib/pgsql/11/data/ssl/server.key'
이것이 필요한 전부는 아닙니다. pg_hba.conf
SSL을 허용해야 합니다. SSL을 허용해야 하는 연결 유형인 첫 번째 인수로 구성됩니다. 공통 유형 '호스트'는 SSL과 비SSL을 모두 허용합니다. 'hostssl' 유형은 SSL을 적용하고 'hostnossl' 유형은 명시적으로 SSL을 허용하지 않습니다.
'호스트' 유형을 사용하면 SSL과 비SSL이 모두 동일한 포트에서 제공될 수 있습니다.
선택적 세 번째 단계: pgbouncer
pgbouncer를 사용하는 경우 pgbouncer에 대해 SSL도 활성화할 수 있습니다. Pgbouncer는 클라이언트에 서비스를 제공하기 위해 동일한 파일(인증 기관 및 서버 인증서, 서버 키 파일)이 필요합니다.
client_tls_sslmode = allow
client_tls_ca_file = /tmp/ca.cert
client_tls_key_file = /tmp/server.key
client_tls_cert_file = /tmp/server.cert
pgbouncer가 SSL을 제공하면 데이터베이스에 대한 비SSL 연결(또는 소켓 연결)을 사용할 수 있으므로 pgbouncer가 SSL 터미네이터로 작동합니다.
pgbouncer가 SSL을 데이터베이스와 통신해야 하는 경우 위의 'client_tls' 매개변수와 마찬가지로 'server_tls'로 시작하는 추가 설정이 필요합니다.
Reference
이 문제에 관하여(Postgres 연결에 SSL을 활성화하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/yugabyte/how-to-enable-ssl-for-postgres-connections-5321
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ssl = on
ssl_ca_file = '/var/lib/pgsql/11/data/ssl/ca.cert'
ssl_cert_file = '/var/lib/pgsql/11/data/ssl/server.cert'
ssl_key_file = '/var/lib/pgsql/11/data/ssl/server.key'
pgbouncer를 사용하는 경우 pgbouncer에 대해 SSL도 활성화할 수 있습니다. Pgbouncer는 클라이언트에 서비스를 제공하기 위해 동일한 파일(인증 기관 및 서버 인증서, 서버 키 파일)이 필요합니다.
client_tls_sslmode = allow
client_tls_ca_file = /tmp/ca.cert
client_tls_key_file = /tmp/server.key
client_tls_cert_file = /tmp/server.cert
pgbouncer가 SSL을 제공하면 데이터베이스에 대한 비SSL 연결(또는 소켓 연결)을 사용할 수 있으므로 pgbouncer가 SSL 터미네이터로 작동합니다.
pgbouncer가 SSL을 데이터베이스와 통신해야 하는 경우 위의 'client_tls' 매개변수와 마찬가지로 'server_tls'로 시작하는 추가 설정이 필요합니다.
Reference
이 문제에 관하여(Postgres 연결에 SSL을 활성화하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/yugabyte/how-to-enable-ssl-for-postgres-connections-5321텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)