1. 准备工作
在开始配置前,确保已安装pgAdmin(可通过sudo apt install pgadmin4或sudo yum install pgadmin4安装)和OpenSSL(多数Linux发行版默认安装,未安装时通过sudo apt install openssl或sudo yum install openssl安装)。
2. 生成SSL证书与私钥
使用OpenSSL生成自签名证书(生产环境建议从受信任CA获取证书):
# 创建专用目录存放证书和密钥(以Ubuntu为例) sudo mkdir -p /etc/pgadmin4/ssl # 生成2048位RSA私钥(设置密码增强安全性) sudo openssl genrsa -out /etc/pgadmin4/ssl/pgadmin.key 2048 # 创建证书签名请求(CSR),填写真实信息(如国家、组织等) sudo openssl req -new -key /etc/pgadmin4/ssl/pgadmin.key -out /etc/pgadmin4/ssl/pgadmin.csr # 生成自签名证书(有效期365天,可根据需求调整) sudo openssl x509 -req -days 365 -in /etc/pgadmin4/ssl/pgadmin.csr -signkey /etc/pgadmin4/ssl/pgadmin.key -out /etc/pgadmin4/ssl/pgadmin.crt 注意:生成私钥时设置的密码需妥善保管,后续配置中可能需要输入。
3. 配置pgAdmin使用SSL证书
编辑pgAdmin的本地配置文件(路径因发行版而异,Ubuntu为/etc/pgadmin4/config_local.py,CentOS可能为/usr/lib/pythonX.X/site-packages/pgadmin4-web/config_local.py),添加以下内容:
SSL_CERTFILE = '/etc/pgadmin4/ssl/pgadmin.crt' # 证书文件路径 SSL_KEYFILE = '/etc/pgadmin4/ssl/pgadmin.key' # 私钥文件路径 关键操作:
sudo chown root:pgadmin /etc/pgadmin4/ssl/pgadmin.key /etc/pgadmin4/ssl/pgadmin.crt sudo chmod 640 /etc/pgadmin4/ssl/pgadmin.key /etc/pgadmin4/ssl/pgadmin.crt (pgadmin为pgAdmin服务的运行用户,可通过ps aux | grep pgadmin确认)4. 重启pgAdmin服务
使配置生效,重启pgAdmin服务:
# 根据系统服务管理工具选择对应命令 sudo systemctl restart pgadmin4 # Systemd系统(Ubuntu 18.04+/CentOS 7+) sudo service pgadmin4 restart # SysVinit系统(旧版本) 验证服务状态:
sudo systemctl status pgadmin4 若显示“active (running)”,则表示服务已成功重启。
5. 验证SSL连接
通过浏览器访问pgAdmin的HTTPS界面(默认端口为5051,若修改过需替换):
https://<服务器IP或域名>:5051 预期结果:
6. 可选:配置Web服务器(Apache/Nginx)的SSL反向代理
若pgAdmin通过Apache或Nginx反向代理提供服务,需额外配置Web服务器的SSL:
Apache示例:
编辑SSL配置文件(如/etc/apache2/sites-available/pgadmin-ssl.conf),添加以下内容:
<VirtualHost *:443> ServerName pgadmin.example.com SSLEngine on SSLCertificateFile /etc/pgadmin4/ssl/pgadmin.crt SSLCertificateKeyFile /etc/pgadmin4/ssl/pgadmin.key <Directory /usr/share/pgadmin4/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost> 启用SSL模块并重启Apache:
sudo a2enmod ssl sudo systemctl restart apache2 Nginx示例:
编辑SSL配置文件(如/etc/nginx/sites-available/pgadmin),添加以下内容:
server { listen 443 ssl; server_name pgadmin.example.com; ssl_certificate /etc/pgadmin4/ssl/pgadmin.crt; ssl_certificate_key /etc/pgadmin4/ssl/pgadmin.key; location / { proxy_pass http://localhost:5051; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } 重启Nginx:
sudo systemctl restart nginx 注意:反向代理配置需与pgAdmin的SSL配置配合使用,确保端口(如443)和路径正确。