温馨提示×

Debian PgAdmin如何配置SSL加密

小樊
41
2025-12-14 14:12:26
栏目: 云计算

Debian 上 pgAdmin 启用 SSL 加密的完整做法


一 前置准备与安装

  • 更新系统并安装 pgAdmin(Debian 常见为通过 apt 安装 pgadmin4):
    • sudo apt update && sudo apt upgrade
    • sudo apt install pgadmin4
  • 如计划修改默认端口,编辑配置文件 /etc/pgadmin4/config_local.py
    • SERVER_MODE = False 改为 SERVER_MODE = True
    • 设置端口:WEB_PORT = 5051(示例改为 5051
  • 防火墙放行对应端口(如使用 ufw):
    • sudo ufw allow 5051/tcp;如仍使用默认 5050/tcp,也需放行 5050。

二 为 pgAdmin Web 界面启用 HTTPS

  • 生成自签名证书与私钥(示例有效期 3650 天):
    • sudo openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout /etc/pgadmin4/server.key -out /etc/pgadmin4/server.crt
  • /etc/pgadmin4/config_local.py 中启用 SSL 并指定证书:
    • SSL_CERTFILE = ‘/etc/pgadmin4/server.crt’
    • SSL_KEYFILE = ‘/etc/pgadmin4/server.key’
  • 重启服务并验证:
    • sudo systemctl restart pgadmin4
    • 浏览器访问 https://<服务器IP或域名>:<WEB_PORT>,确认证书生效(自签名证书在浏览器会有安全提示,属正常)。

三 让 pgAdmin 通过 SSL 连接 PostgreSQL

  • 在目标 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
  • 重启数据库:
    • sudo systemctl restart postgresql
  • 在 pgAdmin 创建服务器连接,在 Parameters 页签按服务端配置选择 SSL mode 并配置证书:
    • SSL mode 说明:
      • Require:仅加密链路,不验证服务器真实性
      • Verify-CA:加密并验证服务器 CA
      • Verify-Full:加密、验证 CA 且校验证书 CN/DNS 与连接地址一致
    • 如服务端启用客户端证书校验,需配置:
      • Client certificate:客户端证书(如 client.crt
      • Client certificate key:客户端私钥(如 client.key
      • Root certificate:数据库 CA 证书(当 SSL mode 为 Verify-CA/Verify-Full 时必填)

四 常见问题与排查

  • 证书与权限:确保 server.key 权限为 600,证书与私钥路径与配置一致;证书过期需重新生成并更新配置。
  • 端口与防火墙:确认 WEB_PORT(如 5051)已在防火墙放行,且浏览器访问使用 https
  • 服务端未要求 SSL:若 pg_hba.conf 未使用 hostssl 或未设置 ssl = on,客户端可能以非加密方式连接;按需调整策略。
  • 自签名证书信任:浏览器访问 pgAdmin 自签名证书会有告警,可导入到系统/浏览器受信根证书库以消除告警(用于生产环境建议使用受信任 CA 签发)。

0