Chứng chỉ SSL cho PostgreSQL

theanh

Administrator
Nhân viên

Chứng chỉ SSL cho PostgreSQL​

Phần này mô tả cách thiết lập chứng chỉ ssl để kích hoạt kết nối được mã hóa từ PgAdmin trên một số máy khách đến postgresql trên máy chủ. Giả định là postgresql (được biên dịch với hỗ trợ ssl) và openssl đã được cài đặt và hoạt động trên máy chủ (Linux). PgAdmin đã được cài đặt trên máy khách (Windows hoặc Linux).

Trên máy chủ, cần có ba chứng chỉ trong thư mục dữ liệu. CentOS mặc định là /var/lib/pgsql/data/:
root.crt (chứng chỉ gốc đáng tin cậy)
server.crt (chứng chỉ máy chủ)
server.key (khóa riêng)

Phát hành lệnh dưới dạng root.
Mã:
sudo -
Mã:
cd /var/lib/pgsql/data
Tạo khóa riêng (bạn phải cung cấp cụm mật khẩu).
Mã:
openssl genrsa -des3 -out server.key 1024
Xóa cụm mật khẩu.
Mã:
openssl rsa -in server.key -out server.key
Đặt quyền và chủ sở hữu phù hợp cho tệp khóa riêng.
Mã:
chmod 400 server.key
chown postgres.postgres server.key
Tạo chứng chỉ máy chủ.
-subj là phím tắt để tránh nhắc nhập thông tin.
-x509 tạo ra chứng chỉ tự ký thay vì yêu cầu chứng chỉ.
Mã:
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/[emailprotected]'
Vì chúng tôi tự ký, chúng tôi sử dụng chứng chỉ máy chủ làm chứng chỉ gốc đáng tin cậy.
Mã:
cp server.crt root.crt
Bạn sẽ cần chỉnh sửa pg_hba.conf. Ví dụ:
Mã:
# TYPE DATABASE USER CIDR-ADDRESS METHOD# "local" chỉ dành cho kết nối socket miền Unixlocal all all trust# IPv4 local connections:host all all 127.0.0.1/32 trust

# IPv4 remote connections for authenticated usershostssl all www-data 0.0.0.0/0 md5 clientcert=1
hostssl all postgres 0.0.0.0/0 md5 clientcert=1
Bạn cần chỉnh sửa postgresql.conf để thực sự kích hoạt ssl:
Mã:
ssl = on
Máy chủ Postgresql phải được khởi động lại.
Mã:
/etc/init.d/postgresql restart
Nếu máy chủ không khởi động lại được, hãy xem trong nhật ký khởi động postgresql, /var/lib/pgsql/pgstartup.log mặc định cho CentOS, vì lý do đó.

Trên máy khách, chúng ta cần ba tệp. Đối với Windows, các tệp này phải nằm trong thư mục %appdata%\postgresql\. Đối với Linux, thư mục ~/.postgresql/.
root.crt (chứng chỉ gốc đáng tin cậy)
postgresql.crt (chứng chỉ máy khách)
postgresql.key (khóa riêng)

Tạo các tệp cần thiết trên máy chủ, sau đó sao chép chúng vào máy khách. Chúng tôi sẽ tạo các tệp cần thiết trong thư mục /tmp/.

Trước tiên, hãy tạo khóa riêng postgresql.key cho máy khách và xóa cụm mật khẩu.
Mã:
openssl genrsa -des3 -out /tmp/postgresql.key 1024
Mã:
openssl rsa -in /tmp/postgresql.key -out /tmp/postgresql.key
Sau đó, hãy tạo chứng chỉ postgresql.crt. Chứng chỉ này phải được ký bởi root đáng tin cậy của chúng tôi (root này đang sử dụng tệp khóa riêng trên máy chủ). Ngoài ra, tên chung của chứng chỉ (CN) phải được đặt thành tên người dùng cơ sở dữ liệu mà chúng ta sẽ kết nối.
Mã:
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'
Mã:
openssl x509 -req -in /tmp/postgresql.csr -CA root.crt -CAkey server.key -out /tmp/postgresql.crt -CAcreateserial
Sao chép ba tệp chúng ta đã tạo từ thư mục /tmp/ của máy chủ vào máy khách.

Sao chép chứng chỉ gốc đáng tin cậy root.crt từ máy chủ máy đến máy khách (đối với Windows pgadmin %appdata%\postgresql\ hoặc đối với Linux pgadmin ~/.postgresql/). Thay đổi quyền tệp của postgresql.key để hạn chế quyền truy cập chỉ dành cho bạn (có thể không cần thiết trên Windows vì quyền truy cập bị hạn chế đã được kế thừa). Xóa các tệp khỏi thư mục máy chủ /tmp/.
 
Back
Bên trên