温馨提示×

Ubuntu下pgAdmin如何配置SSL

小樊
34
2025-12-31 17:34:43
栏目: 云计算

Ubuntu下pgAdmin启用与配置SSL

一 前置准备

  • 安装pgAdmin 4(桌面或服务器模式均可):sudo apt update && sudo apt install pgadmin4。若以服务器模式运行,确保服务已启用并可访问。为后续证书存放创建目录:sudo mkdir -p /etc/pgadmin4/ssl。以上步骤在Ubuntu与Debian系上通用。

二 方式一 直接为pgAdmin启用HTTPS

  • 生成自签名证书(测试可用,生产建议用受信任CA/Let’s Encrypt):
    • 生成私钥:sudo openssl genrsa -out /etc/pgadmin4/ssl/pgadmin.key 2048
    • 生成自签名证书:sudo openssl req -new -x509 -days 365 -nodes -newkey rsa:2048
      -keyout /etc/pgadmin4/ssl/pgadmin.key -out /etc/pgadmin4/ssl/pgadmin.crt
      -subj “/CN=pgadmin.example.com”
  • 配置pgAdmin使用证书:编辑本地配置文件 /etc/pgadmin4/config_local.py(如不存在可新建),加入或修改:
    • SERVER_MODE = True
    • WEB_PORT = 5051 # 可选:改为自定义端口
    • 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/pgadmin.key /etc/pgadmin4/ssl/pgadmin.crt
    • sudo chmod 640 /etc/pgadmin4/ssl/pgadmin.key /etc/pgadmin4/ssl/pgadmin.crt
  • 重启服务并放行防火墙:
    • sudo systemctl restart pgadmin4
    • sudo ufw allow 5051/tcp # 若修改了端口,请放行对应端口
  • 验证:浏览器访问 https://服务器IP或域名:5051,应看到浏览器锁标识(自签名证书会提示不受信任,属正常现象)。

三 方式二 通过Nginx或Apache反向代理启用HTTPS

  • 适用场景:已有Web服务器、需要统一证书管理、HTTP/2、自动续期(如Let’s Encrypt)。
  • Nginx示例(将证书放在/etc/letsencrypt/live/your.domain/):
    • server {
      • listen 443 ssl http2;
      • server_name pgadmin.example.com;
      • ssl_certificate /etc/letsencrypt/live/pgadmin.example.com/fullchain.pem;
      • ssl_certificate_key /etc/letsencrypt/live/pgadmin.example.com/privkey.pem;
      • location / {
        • proxy_pass http://localhost:5051;
        • proxy_set_header Host $host;
        • proxy_set_header X-Real-IP $remote_addr;
        • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        • proxy_set_header X-Forwarded-Proto $scheme;
      • }
    • }
    • 启用站点并重启:sudo ln -s /etc/nginx/sites-available/pgadmin /etc/nginx/sites-enabled && sudo systemctl reload nginx
  • Apache示例(启用SSL模块并配置VirtualHost,证书路径同上)。完成后重启Apache:sudo systemctl restart apache2。
  • 说明:使用反向代理时,pgAdmin可继续监听5051 HTTP,由代理终止TLS;也可关闭pgAdmin自身SSL,仅保留代理层HTTPS。

四 在pgAdmin中配置到PostgreSQL的SSL连接

  • 在pgAdmin中新增服务器,Connection页签填写主机、端口、用户名、密码;在Parameters页签按服务端配置选择SSL mode:
    • Disable:不加密
    • 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时必填)
  • 保存后连接测试,若状态正常即表示到数据库的链路已加密。

五 常见问题与排查

  • 证书权限过宽导致启动失败:私钥应为600,属主为运行用户(常见为pgadmin),属组为pgadmin或root。
  • 自签名证书浏览器告警:测试环境可临时信任;生产环境请使用受信任CA或Let’s Encrypt证书。
  • 端口未放行:确认UFW/云安全组已放行5051(或自定义端口);如使用Nginx/Apache,还需放行443
  • 配置未生效:确认修改的是config_local.py且服务已重启;pgAdmin 4服务器模式默认端口为5050/5051(视配置而定)。
  • 反向代理场景证书路径错误:确保Nginx/Apache证书路径与文件权限正确,并开启HTTP/2(可选)。

0