Linux PgAdmin如何配置SSL加密
导读:Linux 上配置 pgAdmin SSL 加密 一 前置准备 安装 pgAdmin 与 OpenSSL: Debian/Ubuntu:sudo apt update && sudo apt install pgadmi...
Linux 上配置 pgAdmin SSL 加密
一 前置准备
- 安装 pgAdmin 与 OpenSSL:
- Debian/Ubuntu:sudo apt update & & sudo apt install pgadmin4 openssl
- RHEL/CentOS:sudo dnf/yum install pgadmin4 openssl
- 规划证书路径(示例):创建目录 /etc/pgadmin4/ssl,用于存放证书与私钥。
二 为 pgAdmin Web 界面启用 HTTPS
- 生成证书与私钥(自签名,生产环境建议使用受信任 CA 证书):
- 方式 A(一步生成自签名证书,便于快速启用):
- sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/pgadmin4/server.key -out /etc/pgadmin4/server.crt
- 方式 B(传统 CSR 流程,便于后续更换或扩展):
- sudo openssl genrsa -out /etc/pgadmin4/ssl/pgadmin.key 2048
- sudo openssl req -new -key /etc/pgadmin4/ssl/pgadmin.key -out /etc/pgadmin4/ssl/pgadmin.csr
- sudo openssl x509 -req -days 365 -in /etc/pgadmin4/ssl/pgadmin.csr -signkey /etc/pgadmin4/ssl/pgadmin.key -out /etc/pgadmin4/ssl/pgadmin.crt
- 方式 A(一步生成自签名证书,便于快速启用):
- 配置 pgAdmin 使用证书(编辑本地配置文件,避免被包升级覆盖):
- 常见路径:
- Debian/Ubuntu:sudo nano /etc/pgadmin4/config_local.py
- RHEL/CentOS(Python 虚拟环境/WSGI 部署):sudo nano /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’
- 常见路径:
- 设置证书与私钥权限(示例运行用户为 pgadmin,请以 ps aux | grep pgadmin 实际为准):
- sudo chown root:pgadmin /etc/pgadmin4/ssl/.crt /etc/pgadmin4/ssl/.key
- sudo chmod 640 /etc/pgadmin4/ssl/.crt /etc/pgadmin4/ssl/.key
- 可选 修改默认端口(默认 5050,示例改为 5051):
- 在 /etc/pgadmin4/config_local.py 中添加或修改:WEB_PORT = 5051
- 开放防火墙端口(示例 5051/tcp):
- UFW:sudo ufw allow 5051/tcp
- 重启 pgAdmin 并验证:
- sudo systemctl restart pgadmin4
- 访问:https://< 服务器IP或域名> :5051,浏览器应显示锁形图标;自签名证书会提示不受信任(生产环境请使用 CA 证书)。
三 通过反向代理提供 HTTPS(Nginx 示例)
- 若 pgAdmin 由 Nginx/Apache 反向代理对外提供,可在代理层终止 SSL,pgAdmin 配置保持 HTTP:
- Nginx 示例片段:
- 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 / { include uwsgi_params; uwsgi_pass unix:/var/run/pgadmin4/pgadmin4.sock; } }
- 重启 Nginx:sudo systemctl restart nginx
- 说明:此方式下 pgAdmin 配置文件中无需设置 SSL_CERTFILE/SSL_KEYFILE。
- Nginx 示例片段:
四 配置 pgAdmin 连接 PostgreSQL 时使用 SSL
- 在目标 PostgreSQL 服务器启用 SSL:
- postgresql.conf:
- ssl = on
- ssl_cert_file = ‘/etc/postgresql//main/server.crt’
- ssl_key_file = ‘/etc/postgresql//main/server.key’
- pg_hba.conf(示例:允许所有主机以 SSL 连接):
- hostssl all all 0.0.0.0/0 md5
- 重启 PostgreSQL:sudo systemctl restart postgresql
- postgresql.conf:
- 在 pgAdmin 中添加服务器连接时:
- 在“服务器”→“属性”→“连接”中勾选 Use SSL,按需填写 SSL 模式(如 require/verify-full)及客户端证书路径(若服务器启用客户端证书校验)。
五 常见问题与排查
- 证书或私钥路径错误:检查 config_local.py 中 SSL_CERTFILE/SSL_KEYFILE 路径与文件是否存在。
- 权限过宽:私钥应为仅 root 与 pgadmin 可读(如 640),防止泄露。
- 端口未放行:确认 UFW/ firewalld 已放行 5050/5051(或自定义端口)。
- 自签名证书不受信任:浏览器首次访问会有安全提示;生产环境请部署 CA 签发证书或在反向代理层使用受信任证书。
- 服务未生效:执行 sudo systemctl status pgadmin4 查看日志与启动失败原因。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux PgAdmin如何配置SSL加密
本文地址: https://pptw.com/jishu/758828.html
