温馨提示×

Ubuntu PgAdmin如何配置SSL加密连接

小樊
39
2025-11-16 10:11:01
栏目: 云计算

Ubuntu 上配置 pgAdmin 的 SSL 加密连接

一 架构与准备

  • 明确加密对象:
    • 浏览器到 pgAdmin 的访问(HTTPS)。
    • pgAdmin 到 PostgreSQL 的连接(TLS/SSL)。
  • 准备证书(示例命令,按需替换路径与域名):
    • 自签名证书(测试/内网):
      • 生成私钥与证书:
        • sudo mkdir -p /etc/ssl/private
        • sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/server-key.pem -out /etc/ssl/private/server-cert.pem -subj “/CN=localhost”
    • 生产环境建议使用受信任 CA 签发的证书,并在客户端导入根证书以进行校验。

二 配置浏览器到 pgAdmin 的 HTTPS

  • 若通过 Nginx/Apache 反向代理托管 pgAdmin,启用 TLS:
    • 将上一步生成的 server-cert.pemserver-key.pem 配置到虚拟主机,开启 443 端口并强制 HTTPS;完成后重启 Web 服务与 pgAdmin 服务。
    • 示例 Nginx 片段(证书路径按实际调整):
      • server { listen 443 ssl; ssl_certificate /etc/ssl/private/server-cert.pem; ssl_certificate_key /etc/ssl/private/server-key.pem; … }
    • 访问地址使用 https://服务器IP或域名,确保浏览器显示锁标识。
  • 若使用容器/桌面模式运行 pgAdmin,也可为其生成自签名证书并在 pgAdmin 配置中启用 HTTPS(以实际安装方式为准)。

三 配置 pgAdmin 到 PostgreSQL 的 SSL

  • 在 PostgreSQL 服务器启用 SSL(编辑 postgresql.conf,路径因版本而异,如 /etc/postgresql/14/main/postgresql.conf):
    • 启用并指定证书:
      • ssl = on
      • ssl_cert_file = ‘/etc/ssl/certs/server.crt’
      • ssl_key_file = ‘/etc/ssl/private/server.key’
      • ssl_ca_file = ‘/etc/ssl/certs/ca.crt’ # 可选,用于校验客户端
    • 设置客户端认证(编辑 pg_hba.conf):
      • 允许远程加密连接(示例):
        • hostssl all all 0.0.0.0/0 md5
      • 如需双向认证(mTLS),要求客户端证书:
        • hostssl all all 0.0.0.0/0 cert clientcert=1
    • 重启数据库并验证:
      • sudo systemctl restart postgresql
      • psql “host=服务器IP port=5432 dbname=postgres user=你的用户 sslmode=require
  • 证书与权限要点:
    • 私钥文件权限必须严格,仅 postgres 用户可读(如 600),且所在目录权限正确;否则 PostgreSQL 可能无法启动。
  • 常用 sslmode 说明(在客户端/连接字符串中指定):
    • disable:禁用 SSL
    • allow:允许但不强制
    • prefer:优先 SSL,失败回退
    • require:要求 SSL
    • verify-ca:要求并校验证书 CA
    • verify-full:要求并校验证书 CA 与主机名匹配

四 在 pgAdmin 中创建加密连接

  • 打开 pgAdmin,Servers → Create → Server:
    • General:输入名称
    • Connection:
      • Host name/address:PostgreSQL 服务器地址
      • Port:5432
      • Username/Password:数据库凭据
      • SSL 模式:选择 require/verify-ca/verify-full(与服务器策略一致)
      • 如启用 mTLS,在 SSL 选项中补充:
        • Client Certificate:/path/to/client.crt
        • Client Key:/path/to/client.key
        • Root Certificate:/path/to/ca.crt
    • 保存并测试连接,确认状态为已连接且为 SSL/TLS 加密。

五 网络与访问控制加固

  • 防火墙仅放行必要端口(示例):
    • 若 pgAdmin 走 443:sudo ufw allow 443/tcp
    • 若 pgAdmin 使用 5050:sudo ufw allow 5050/tcp
    • 数据库端口(如 5432)按需限制来源 IP
  • pg_hba.conf 中细化来源网段与认证方式,仅允许可信网络与必要用户。

0