首页主机资讯ubuntu中pgadmin如何配置SSL

ubuntu中pgadmin如何配置SSL

时间2025-11-18 20:35:04发布访客分类主机资讯浏览535
导读:Ubuntu 中 pgAdmin 配置 SSL 的完整指南 一 前置说明 需要明确你要加密的链路: 浏览器到 pgAdmin(Web 管理界面):启用 HTTPS。 pgAdmin 到 PostgreSQL 数据库:在 pgAdmin...

Ubuntu 中 pgAdmin 配置 SSL 的完整指南

一 前置说明

  • 需要明确你要加密的链路:
    • 浏览器到 pgAdmin(Web 管理界面):启用 HTTPS
    • pgAdmin 到 PostgreSQL 数据库:在 pgAdmin 连接对话框中启用 SSL/TLS
  • 常见部署方式与对应做法:
    • 容器化(Docker/Podman):在容器里挂载证书,并通过环境变量开启 SSL。
    • 包安装(DEB/RPM):修改 pgAdmin 配置并重启服务。
    • 反向代理(Nginx/Apache):在代理层终止 TLS,pgAdmin 本身可保持 HTTP。

二 浏览器到 pgAdmin 启用 HTTPS(推荐)

  • 方式 A 反向代理(Nginx 示例,证书由 Let’s Encrypt 或自签)
    1. 安装与准备证书
      • 安装 Certbot:sudo apt install certbot python3-certbot-nginx
      • 获取证书:sudo certbot certonly --nginx -d your.domain.com
      • 证书路径通常为:/etc/letsencrypt/live/your.domain.com/fullchain.pem/etc/letsencrypt/live/your.domain.com/privkey.pem
    2. 配置 Nginx
      • 示例片段:
        server {
            
            listen 443 ssl http2;
            
            server_name your.domain.com;
            
        
            ssl_certificate     /etc/letsencrypt/live/your.domain.com/fullchain.pem;
            
            ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;
        
        
            location / {
            
                proxy_pass http://127.0.0.1:5050;
               # pgAdmin 监听地址
                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;
        
            }
        
        }
            
        
      • 可选:将 HTTP(80) 重定向到 HTTPS(443)
    3. 重启 Nginx:sudo systemctl reload nginx
    4. 访问 https://your.domain.com,浏览器应显示锁标识
  • 方式 B 直接在 pgAdmin 内置服务器启用 TLS(适用于包安装)
    1. 生成自签证书(示例有效期 3650 天)
      • sudo mkdir -p /etc/pgadmin4
      • sudo openssl req -newkey rsa:2048 -x509 -days 3650 -keyout /etc/pgadmin4/server.key -out /etc/pgadmin4/server.crt
      • sudo chmod 600 /etc/pgadmin4/server.key
      • sudo chown www-data:www-data /etc/pgadmin4/server.key /etc/pgadmin4/server.crt
    2. 配置 pgAdmin 启用 SSL(两种常见配置方式,二选一)
      • 若使用 config_system.py(系统级):
        • 编辑:/usr/pgadmin4/venv/lib/python3.*/site-packages/pgadmin4/config_system.py
        • 追加或确保存在:
          SECURE_SSL_REDIRECT = True
          SSL_CERT_FILE = '/etc/pgadmin4/server.crt'
          SSL_KEY_FILE = '/etc/pgadmin4/server.key'
          
      • 若使用 config_local.py(推荐,避免升级覆盖):
        • 新建/编辑:/usr/pgadmin4/venv/lib/python3.*/site-packages/pgadmin4/config_local.py
        • 写入:
          SECURE_SSL_REDIRECT = True
          SSL_CERT_FILE = '/etc/pgadmin4/server.crt'
          SSL_KEY_FILE = '/etc/pgadmin4/server.key'
          
    3. 重启 pgAdmin 服务
      • 若以服务运行:sudo systemctl restart pgadmin4
      • 若以 WSGI 运行(Apache/mod_wsgi):sudo systemctl restart apache2
    4. 访问 https://服务器IP:5050,确认证书生效
  • 防火墙与访问控制
    • 仅放通必要来源:sudo ufw allow from < 可信IP> to any port 443
    • 如需仅本地访问:sudo ufw deny 5050/tcp;或仅允许 443/tcp

三 pgAdmin 到 PostgreSQL 启用 SSL

  • 在 pgAdmin 添加/编辑服务器连接,切换到 SSL 选项卡,选择:
    • SSL 模式:require(或 verify-ca/verify-full,视证书信任链而定)
    • 如服务器使用自签 CA,将 CA 证书内容粘贴到 Root Certificate(或指定 CA 文件路径)
  • 在 PostgreSQL 服务端准备证书(示例)
    • server.crt(服务器证书)、server.key(服务器私钥)、root.crt(CA 证书)
    • postgresql.conf(示例):
      ssl = on
      ssl_cert_file = '/etc/postgresql/16/main/server.crt'
      ssl_key_file  = '/etc/postgresql/16/main/server.key'
      
    • pg_hba.conf(示例,强制 SSL):
      hostssl all all 0.0.0.0/0 md5
      
    • 重启 PostgreSQL:sudo systemctl restart postgresql
  • 在 pgAdmin 连接测试,状态应显示 SSL: on

四 容器化部署的快捷做法(Docker/Podman)

  • 挂载证书并开启 TLS(内置服务器)
    • server.crtserver.key 挂载到容器内(如 /certs
    • 启动容器示例:
      docker run -d --name pgadmin \
        -p 443:443 \
        -e PGADMIN_CONFIG_SERVER_MODE=False \
        -e PGADMIN_ENABLE_TLS=True \
        -v /host/certs:/certs \
        -e PGADMIN_CONFIG_SSL_CERT_FILE=/certs/server.crt \
        -e PGADMIN_CONFIG_SSL_KEY_FILE=/certs/server.key \
        dpage/pgadmin4:latest
      
  • 反向代理模式(推荐生产)
    • 容器内仍用 5050 暴露 HTTP,由宿主机 Nginx/Ingress 终止 TLS(同第二节)

五 常见问题与排查

  • 证书权限过宽导致启动失败:私钥应为 600,属主与运行用户一致(如 www-data
  • 浏览器提示证书不受信任:自签证书需手动信任;生产建议使用 Let’s Encrypt 或企业 CA
  • 配置不生效:确认修改的是实际加载的配置(优先 config_local.py),并重启服务
  • 连接 PostgreSQL 报 SSL 错误:核对 SSL 模式、证书链与 pg_hba.conf 的 hostssl 规则
  • 日志定位:
    • pgAdmin 日志:/var/log/pgadmin4/(检查启动与 HTTPS 相关报错)
    • Nginx/Apache 错误日志:/var/log/nginx/error.log 或 /var/log/apache2/error.log
  • 安全加固建议:
    • 仅开放 443/tcp,限制来源 IP(ufw/安全组)
    • 定期更新系统与 pgAdmin,启用强密码策略与审计日志

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu中pgadmin如何配置SSL
本文地址: https://pptw.com/jishu/750492.html
如何在Linux上安装MySQL数据库 pgadmin在ubuntu上如何进行备份恢复

游客 回复需填写必要信息