[PostgreSQL] TLS 설정하기 (Ubuntu)

gweowe·2023년 7월 26일
0

PostgreSQL을 다른 애플리케이션과 연동을 할 때, TLS을 사용해서 더 안전하게 사용해보고 싶어서 공부를 하여 간단하게 정리를 해보았습니다.

사전 준비 사항

PostgreSQL이 정상적으로 설치되어 있고, 인증서를 생성해놓은 상태에서 진행합니다.

1. 인증서 소유자 변경

PostgreSQL에서 TLS 기능을 사용하려면 해당 인증서와 키에 대한 권한이 postgres 유저에 있어야 합니다.

sudo chown postgres:postgres <ca인증서>
sudo chown postgres:postgres <crt파일>
sudo chown postgres:postgres <key파일>

2. Key 권한 변경

PostgreSQL에서는 Key의 권한에 대해 엄격하기 때문에 권한을 조정해야 합니다.

sudo chmod 400 <key파일>

PostgreSQL 설정 파일 수정

1. 설정 파일 위치 찾기

환경마다 설정 파일의 위치가 다를 수 있기 때문에 설정파일의 위치를 찾습니다.

sudo -i -u postgres psql -U postgres -c 'SHOW config_file'
Output :
               config_file
-----------------------------------------
 /etc/postgresql/12/main/postgresql.conf
(1 row)

저 같은 경우에는 /etc/postgresql/12/main/위치에 설정 파일이 존재했습니다.

2. 설정 파일 수정

postgresql.conf
# ..............................생략..............................

ssl = on
ssl_ca_file = '<c인증서 경로>'
ssl_cert_file = '<crt파일 경로>'
ssl_key_file = '<key파일 경로>'

# ..............................생략..............................

TLS를 사용하기 위해서 ssl을 on으로 변경하고, 인증서 위치 정보를 기입합니다.

pg_hba.conf (postgresql.conf와 같은 위치에 존재)
# ..............................생략..............................
hostssl all             all              0.0.0.0/0              scram-sha-256

외부로부터 PostgreSQL에 대해 연결을 허용하기 위해 파일 맨 아래에 다음과 같은 내용을 추가합니다.

3. PostgreSQL 재시작

설정 적용을 확실하게 하기 위해서 PostgreSQL을 재시작 합니다.

sudo systemctl restart postgresql.service

이제 모든 설정이 완료되었습니다.

테스트

1. 클라이언트에서 PostgreSQL 접속

저는 PostgreSQL에 접속하기 위한 클라이언트로 Beekeeper를 사용했습니다.

Beekeeper 다운로드 : https://github.com/beekeeper-studio/beekeeper-studio/releases

2. Beekeeper 접속 설정psqlset

① : 인증서와 일치하는 Domain을 입력합니다.

② : 인증서를 사용하기 위해 체크합니다.

③ : 각 란에 알맞는 인증서를 업로드합니다.

④ : PostgreSQL의 유저 정보와 DB 이름을 입력합니다.

3. 접속 확인

psql

성공적으로 접속이 되었습니다.

profile
정리하는 공간

0개의 댓글