在 CentOS 上为 pgAdmin(以 pgAdmin 4 为例)配置 SSL,通常涉及两种场景:
下面分别说明。
sudo dnf install -y pgadmin4-web
或
sudo yum install -y pgadmin4-web
可以使用自签名证书或正式证书:
sudo mkdir -p /etc/pgadmin/ssl
sudo openssl req -new -x509 -days 365 -nodes \
-out /etc/pgadmin/ssl/pgadmin.crt \
-keyout /etc/pgadmin/ssl/pgadmin.key
编辑配置文件:
sudo vi /etc/pgadmin/config.py
添加或修改:
SERVER_MODE = True
SECURE = True
SSL_CERT_PATH = '/etc/pgadmin/ssl/pgadmin.crt'
SSL_KEY_PATH = '/etc/pgadmin/ssl/pgadmin.key'
sudo chown apache:apache /etc/pgadmin/ssl/*
sudo chmod 600 /etc/pgadmin/ssl/pgadmin.key
sudo systemctl restart httpd
# 或
sudo systemctl restart pgadmin4
浏览器访问:
https://<服务器IP>/pgadmin4
编辑 postgresql.conf:
ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
pg_hba.conf 示例:
hostssl all all 0.0.0.0/0 md5
重启 PostgreSQL:
sudo systemctl restart postgresql
在 pgAdmin 中:
prefer(推荐)requireverify-caverify-full如需要客户端证书:
因为是自签名证书,属正常现象。
PostgreSQL / pgAdmin 对 key 文件权限非常严格,必须是 600。
如启用了 SELinux:
sudo setsebool -P httpd_can_network_connect 1
如果你能提供:
我可以给出更精确的配置步骤。