在开始配置前,需确保系统已安装OpenSSL(用于生成证书)和pgAdmin(目标服务)。若未安装,可通过包管理器安装(如Ubuntu使用sudo apt install openssl pgadmin4,CentOS使用sudo yum install openssl pgadmin4)。
pgAdmin的SSL加密需依赖私钥(.key)和证书(.crt/.pem),可选择生成自签名证书(测试/内部使用)或申请CA签名证书(生产环境推荐)。
使用OpenSSL生成2048位的RSA私钥(建议密钥长度≥2048位以保证安全性):
sudo openssl genrsa -out /etc/pgadmin4/pgadmin.key 2048
/etc/pgadmin4/目录(pgAdmin默认配置路径),可根据实际需求调整。私钥生成后,需创建CSR文件(用于申请证书):
sudo openssl req -new -key /etc/pgadmin4/pgadmin.key -out /etc/pgadmin4/pgadmin.csr
localhost)等信息。若无需CA签名,可直接生成自签名证书(有效期通常设为1-3年):
sudo openssl x509 -req -days 365 -in /etc/pgadmin4/pgadmin.csr -signkey /etc/pgadmin4/pgadmin.key -out /etc/pgadmin4/pgadmin.crt
openssl x509 -in /etc/pgadmin4/pgadmin.crt -text -noout
需修改pgAdmin的配置文件,指定证书与私钥路径,并开启SSL功能。
pgAdmin的主配置文件通常位于/etc/pgadmin4/pgadmin.conf(部分发行版可能为/etc/pgadmin4/config_local.py,如Ubuntu),使用文本编辑器打开:
sudo nano /etc/pgadmin4/pgadmin.conf
在配置文件中找到[server] section(或直接添加),修改以下参数:
[server]
ssl = on
ssl_cert_file = /etc/pgadmin4/pgadmin.crt # 证书文件路径
ssl_key_file = /etc/pgadmin4/pgadmin.key # 私钥文件路径
.pem格式的证书(如将私钥与证书合并),需将ssl_cert_file指向合并后的文件(如/etc/pgadmin4/pgadmin.pem)。确保证书与私钥仅pgAdmin用户(通常为pgadmin)可访问,避免敏感信息泄露:
sudo chown root:pgadmin /etc/pgadmin4/pgadmin.key /etc/pgadmin4/pgadmin.crt
sudo chmod 640 /etc/pgadmin4/pgadmin.key /etc/pgadmin4/pgadmin.crt
配置生效后,重启pgAdmin服务使更改生效:
sudo systemctl restart pgadmin4
通过浏览器访问pgAdmin的HTTPS地址(如https://<服务器IP>:5051,默认端口为5051,若修改过需替换),若浏览器地址栏显示锁图标,则表示SSL加密连接成功。
查看pgAdmin的日志文件(通常位于/var/log/pgadmin/),确认无SSL相关错误:
sudo tail -f /var/log/pgadmin/pgadmin4.log
若pgAdmin需连接远程PostgreSQL数据库,还需确保PostgreSQL服务器已启用SSL,步骤如下:
参考pgAdmin证书生成步骤,创建PostgreSQL的私钥(/etc/postgresql/<版本>/main/server.key)和证书(/etc/postgresql/<版本>/main/server.crt)。
编辑postgresql.conf(路径如/etc/postgresql/<版本>/main/postgresql.conf),开启SSL:
ssl = on
ssl_cert_file = '/etc/postgresql/<版本>/main/server.crt'
ssl_key_file = '/etc/postgresql/<版本>/main/server.key'
编辑pg_hba.conf(路径如/etc/postgresql/<版本>/main/pg_hba.conf),添加hostssl规则(强制SSL连接):
hostssl all all 0.0.0.0/0 md5 # 所有远程客户端需通过SSL连接,认证方式为md5
sudo systemctl restart postgresql
在pgAdmin创建PostgreSQL连接时,勾选**“Use SSL”选项,并选择“Certificate”**模式(若使用自签名证书,需提前将证书导入pgAdmin信任库)。
cp /etc/pgadmin4/pgadmin.conf /etc/pgadmin4/pgadmin.conf.bak)。