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.
Ví dụ ở đây tôi tạo key server 10 nămsudo -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
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
Ví dụ tạo key 1 năm cho usercd /home/postgres/test
Thực hiện tạo keyopenssl req -new -nodes -keyout testuser.key -out testuser.csr -subj '/CN=testuser'
Tạo certificate 1 năm cho useropenssl 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 keychmod og-rwx testuser.key
Kiểm tra certificate của user vừa tạoopenssl verify -CAfile $PGDATA/root.crt -purpose sslclient testuser.crt
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
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