SSL 인증서 · 2 min read · Dec 15, 2025
PostgreSQL을 위한 SSL 인증서
PostgreSQL을 위한 SSL 인증서
이 문서에서는 PgAdmin을 사용하여 클라이언트 머신에서 PostgreSQL 서버 머신으로 암호화된 연결을 활성화하기 위해 SSL 인증서를 설정하는 방법을 설명합니다. PostgreSQL(SSL 지원으로 컴파일됨)과 OpenSSL이 서버(Linux)에 이미 설치되어 있고 작동 중이라는 가정하에 작성되었습니다. PgAdmin은 클라이언트(Windows 또는 Linux)에 이미 설치되어 있습니다.
서버에서는 데이터 디렉토리에 세 개의 인증서가 필요합니다. CentOS의 기본 경로는 /var/lib/pgsql/data/:
root.crt (신뢰할 수 있는 루트 인증서)
server.crt (서버 인증서)
server.key (개인 키)
루트 사용자로 명령을 실행하십시오.
sudo -cd /var/lib/pgsql/data개인 키를 생성합니다(비밀번호를 제공해야 합니다).
openssl genrsa -des3 -out server.key 1024비밀번호를 제거합니다.
openssl rsa -in server.key -out server.key개인 키 파일에 적절한 권한과 소유자를 설정합니다.
chmod 400 server.key
chown postgres.postgres server.key서버 인증서를 생성합니다.
-subj는 정보를 입력하라는 프롬프트를 피하기 위한 단축키입니다.
-x509는 인증서 요청이 아닌 자체 서명된 인증서를 생성합니다.
openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=CA/ST=British Columbia/L=Comox/O=TheBrain.ca/CN=thebrain.ca/[email protected]'우리는 자체 서명하고 있으므로, 서버 인증서를 신뢰할 수 있는 루트 인증서로 사용합니다.
cp server.crt root.crtpg_hba.conf를 편집해야 합니다. 예를 들어:
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local"은 Unix 도메인 소켓 연결 전용입니다.
local all all trust
# IPv4 로컬 연결:
host all all 127.0.0.1/32 trust
# 인증된 사용자를 위한 IPv4 원격 연결
hostssl all www-data 0.0.0.0/0 md5 clientcert=1
hostssl all postgres 0.0.0.0/0 md5 clientcert=1실제로 SSL을 활성화하려면 postgresql.conf를 편집해야 합니다:
ssl = onPostgreSQL 서버를 재시작해야 합니다.
/etc/init.d/postgresql restart서버가 (재)시작되지 않으면, CentOS의 기본 경로인 /var/lib/pgsql/pgstartup.log에서 PostgreSQL 시작 로그를 확인하여 이유를 찾으십시오.
클라이언트에서는 세 개의 파일이 필요합니다. Windows의 경우 이 파일들은 %appdata%\postgresql\ 디렉토리에 있어야 합니다. Linux의 경우 ~/.postgresql/ 디렉토리에 있어야 합니다.
root.crt (신뢰할 수 있는 루트 인증서)
postgresql.crt (클라이언트 인증서)
postgresql.key (개인 키)
서버 머신에서 필요한 파일을 생성한 후 클라이언트로 복사합니다. /tmp/ 디렉토리에서 필요한 파일을 생성합니다.
먼저 클라이언트 머신을 위한 개인 키 postgresql.key를 생성하고 비밀번호를 제거합니다.
openssl genrsa -des3 -out /tmp/postgresql.key 1024openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key그런 다음 인증서 postgresql.crt를 생성합니다. 이 인증서는 신뢰할 수 있는 루트(서버 머신의 개인 키 파일을 사용)로 서명되어야 합니다. 또한 인증서의 공통 이름(CN)은 우리가 연결할 데이터베이스 사용자 이름으로 설정해야 합니다.
openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr -subj '/C=CA/ST=British Columbia/L=Comox/O=TheBrain.ca/CN=www-data'openssl x509 -req -in /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial서버 /tmp/ 디렉토리에서 생성한 세 개의 파일을 클라이언트 머신으로 복사합니다.
서버 머신에서 클라이언트 머신으로 신뢰할 수 있는 루트 인증서 root.crt를 복사합니다(Windows pgadmin의 경우 %appdata%\postgresql\ 또는 Linux pgadmin의 경우 ~/.postgresql/). postgresql.key의 파일 권한을 변경하여 본인만 접근할 수 있도록 제한합니다(Windows에서는 이미 제한된 접근이 상속되므로 아마 필요하지 않을 것입니다). 서버 /tmp/ 디렉토리에서 파일을 제거합니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.