Hướng dẫn cấu hình ssl seft signed cho postgresql

Về hệ thống database thì vấn đề security chúng ta phải đặt lên hàng đầu. Sau đây tôi sẽ hướng dẫn cách cấu hình ssl seft-signed cho postgresql.

Step 1: Thực hiện tạo key cho server

Ví dụ ở đây tôi tạo key server 10 năm
sudo -iu postgres
cd $PGDATA
openssl req -new -x509 -days 3650 -nodes -text -out server.crt -keyout server.key -subj "/CN=pgserver02"
cp server.crt root.crt
chmod og-rwx server.key

Step 2: Thực hiện enable ssl cho postgresql

vi $PGDATA/postgresql.conf
ssl = on
ssl_ca_file = 'root.crt'
ssl_cert_file = 'server.crt'
ssl_crl_file = ''
ssl_key_file = 'server.key'
ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
ssl_prefer_server_ciphers = on
Restart PG
pg_ctl restart -D $PGDATA

Step 3: Thực hiện tạo key và certificate cho user

Ví dụ tạo key 1 năm cho user
cd /home/postgres/test
Thực hiện tạo key
openssl req -new -nodes -keyout testuser.key -out testuser.csr -subj '/CN=testuser'
Tạo certificate 1 năm cho user
openssl x509 -days 365 -req -CAcreateserial -in testuser.csr -CA $PGDATA/root.crt -CAkey $PGDATA/server.key -out testuser.crt
Cấu hình quyền cho file private key
chmod og-rwx testuser.key
Kiểm tra certificate của user vừa tạo
openssl verify -CAfile $PGDATA/root.crt -purpose sslclient testuser.crt

Step 4: Thực hiện cho phép user và client kết nối đến server

sudo su - postgres
vi $PGDATA/pg_hba.conf
hostssl <dbname> <username> <Client IP Adress>/32 cert
ví dụ:
hostssl dbname01 testuser 192.168.56.102/32 cert
:wq

pg_ctl -D $PGDATA reload

Step 5: Thực hiện testing kết nối từ client đến server với user key và chứng thực vừa tạo

psql 'host=192.168.56.102 port=5432 dbname=dbname01 user=testuser sslmode=verify-full sslcert=testuser.crt sslkey=testuser.key sslrootcert=root.crt' 


Vậy là chúng ta đã cấu hình xong ssl self-signed cho postgresql. Do khá bận nên tôi chỉ viết ngắn gọn cho trường hợp ssl mode verify-full. Bạn có thể tìm hiều và thử thêm cho các trường hợp khác. Hy vọng sẽ giúp ích được cho bạn!!! Cảm ơn

Facebook Comments Box