如何通过Ubuntu PgAdmin配置SSL加密连接以保障PostgreSQL数据库安全?

2026-05-16 00:501阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

数据库就像大地的根系,承载着无数业务的养分。若根系受伤,整片森林都会颤抖。于是 我们要用 SSL 为 PostgreSQL 铺上一层柔软却坚固的防护毯, 一阵见血。 让数据在传输的每一次呼吸中,都沐浴在加密的光辉里。下面就跟随我一步步走进这段温暖而实用的旅程吧。

如何通过Ubuntu PgAdmin配置SSL加密连接以保障PostgreSQL数据库安全?

一、 准备工作:让系统和心情都保持最佳状态

琢磨琢磨。 1️⃣ 更新系统软件源,确保 OpenSSL 与 PostgreSQL 均为最新版本。

sudo apt update && sudo apt upgrade -y
sudo apt install postgresql postgresql-contrib pgadmin4 nginx openssl

2️⃣ 检查防火墙规则, 打开 5432以及 443端口, 站在你的角度想... 让外部的请求能够顺畅而平安地到达。

sudo ufw allow 5432/tcp
sudo ufw allow https

别忘了 敞开胸怀迎接新技术,就像春天里给小树浇水;每一次升级都是对未来的一次深情拥抱。

二、 生成自签名证书:用手中的钥匙点亮平安灯塔

自签名证书是入门级的守护者,足以满足内部网络或测试环境的需求。打开终端, 输入以下指令:

如何通过Ubuntu PgAdmin配置SSL加密连接以保障PostgreSQL数据库安全?
mkdir -p /etc/ssl/pgadmin
cd /etc/ssl/pgadmin
# 生成私钥
openssl genrsa -out pgadmin.key 4096
# 创建证书签名请求
openssl req -new -key pgadmin.key -out pgadmin.csr \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT Department/CN=pgadmin.mycompany.com"
# 用私钥自签名生成证书,有效期365天
openssl x509 -req -days 365 -in pgadmin.csr -signkey pgadmin.key -out pgadmin.crt

他急了。 此时你已经拥有了两把钥匙——pgadmin.key和 pgadmin.crt。把它们放在平安目录, 并确保只有 root 能读取:

chmod 600 pgadmin.key pgadmin.crt
chown root:root pgadmin.key pgadmin.crt

三、让 PostgreSQL 开启 SSL 支持:让数据在隧道中自由飞翔

编辑 PostgreSQL 主配置文件 /etc/postgresq 别犹豫... l/14/main/postgresql.conf加入或修改以下几行:

ssl = on
ssl_cert_file = '/etc/ssl/pgadmin/pgadmin.crt'
ssl_key_file = '/etc/ssl/pgadmin/pgadmin.key'
# 可选:使用更强的加密套件
ssl_ciphers = 'HIGH:!aNULL:!MD5'

接着,在 /etc/postgresql/14/main/pg_hba.conf 中为需要加密的用户添加 “hostssl” 条目,比方说:,我深信...

hostssl    all    all    0.0.0.0/0    md5
hostssl    all    all    ::/0         md5

保存后重启服务:

sudo systemctl restart postgresql

四、配置 pgAdmin4 Web 模式:让管理界面同样披上 HTTPS 的外衣

我们将 Nginx 当作反向代理,把外部对 https://yourdomai 不堪入目。 n.com/pgadmin4 的访问转发到本地运行的 pgAdmin4 服务。

# /etc/nginx/sites-available/pgadmin4.conf
server {
    listen 443 ssl;
    server_name yourdomain.com;
    ssl_certificate     /etc/ssl/pgadmin/pgadmin.crt;
    ssl_certificate_key /etc/ssl/pgadmin/pgadmin.key;
    location / {
        proxy_pass http://127.0.0.1:5050;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

启用站点并重新加载 Nginx:

sudo ln -s /etc/nginx/sites-available/pgadmin4.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

五、 在 pgAdmin 中添加 SSL 数据库连接:一步到位的心动体验

  • 步骤一:打开浏览器访问 https://yourdomain.com/pgadmin4首次访问会提示信任自签名证书,只需点击“继续前往”。这就像第一次踏入森林,却已经感受到清新的空气。
  • 步骤二:在左侧树形结构中右键 “Servers” → “Create” → “Server”。填写基本信息后切换到 “Connection” 标签页。
  • 步骤三:勾选 “SSL mode”,选择 “require”。如果你想更严格,可以选 “verify-full”,并填入证书路径。保存后你会看到绿色的小锁图标,这正是平安之门已悄然开启。

六、 常见问题速查表——让困惑瞬间消散如春风拂面

问题描述可能原因解决方案要点
PgAdmin 报错 “SSL connection is not allowed” - PostgreSQL 未开启 ssl - 客户端使用了非 SSL 模式 - 确认 postgresql.conf 中 ssl=on - 在连接设置里将 SSL mode 改为 require 或 verify-full
Nginx 返回 502 Bad Gateway - PgAdmin 服务未启动或监听错误端口 - 检查 systemctl status pgad​min4 - 确认 proxy_pass 指向正确地址
浏览器提示证书不受信任 - 使用自签名证书未导入根证书 - 在浏览器中手动信任该证书 - 或购买受信任 CA 的正式证书
Ssl ciphers 错误导致连接被拒绝 - 配置了不支持的加密套件 - 使用 openssl ciphers 命令查看支持列表 - 删除不兼容项后重启 PostgreSQL
Pgbouncer 等中间件无法转发 SSL 请求 - 中间件未开启 TLS 支持 - 在 pgbouncer.ini 中添加 tls_cert_file 与 tls_key_file 配置,再重启 pgbouncer

七、精选工具对比表——挑选适合自己的“平安装备” 🎯

#️⃣ 产品名称
OpenSSL 命令行全能王,可生成 CSR、签发证书、检查链路完整性。TLS 1.3 完美支持 ★★★★★
LibreSSL 体积小、 依赖少,适合容器化部署。TLS 1.2‑1.3 ★★★★☆
GnuTLS API 丰富,可嵌入 C/C++ 项目。TLS 1.3 ★★★☆☆
Certbot 一键申请 Let’s Encrypt 免费可信证书。LetsEncrypt CA

从上表可以看出, 即便是开源免费工具,也能提供企业级别的加密保障。挑选时请结合项目规模与维护成本做决定;正如种树要选适合本土气候的品种,一颗小树才能长成参天大木,嗐...。

八、 进阶加固技巧:让平安层层叠叠,如春雨润物细无声

  • Cipher Suite 精简:Ssl_ciphers 建议只保留 HIGH 等级以上,加上 !aNULL !MD5 等排除弱算法;这样即便攻击者拿出超级计算机,也只能望洋兴叹。
  • Password Policy:PGA 管理员账户密码务必使用长度≥16且包含大小写字母、 数字与特殊字符;定期轮换密码,如同每年给树木施肥,让根系保持活力。
  • MFA 多因素认证:PGA 4 已内置 TOTP 支持, 为登录再添一道动态验证码关卡;这一步相当于在树干上绑上防盗锁链,偷盗者只能望而却步。
  • Audit Logging:PGA 可开启查询日志并通过 rsyslog 转存至远程日志服务器;如此一来 即使出现异常,也能快速追溯,如同给森林装上监控摄像头。
  • DDoS 防护与限流:Nginx 可以利用 limit_req 模块限制每秒请求次数;防止恶意流量把我们的“绿洲”冲刷殆尽。

九、 ——以技术之光浇灌数据之林,让希望永驻 🌱🌳💚

配置完毕后用 psql 或任何客户端尝试一次带有 ?sslmode=require 参数的连接,如果出现绿色锁标志,那就是成功绽放的花朵。此时 你已经为团队搭建了一道不可轻易穿透的防线;也为自己的人生添了一笔值得骄傲的成就感——正如每一次植树,都在为子孙后代留下清新的空气与丰盈的大地。

L​et's keep coding, keep planting, and keep believing that every l 太水了。 ine of secure code is a seed that will grow into a forest of trust.


标签:Ubuntu

数据库就像大地的根系,承载着无数业务的养分。若根系受伤,整片森林都会颤抖。于是 我们要用 SSL 为 PostgreSQL 铺上一层柔软却坚固的防护毯, 一阵见血。 让数据在传输的每一次呼吸中,都沐浴在加密的光辉里。下面就跟随我一步步走进这段温暖而实用的旅程吧。

如何通过Ubuntu PgAdmin配置SSL加密连接以保障PostgreSQL数据库安全?

一、 准备工作:让系统和心情都保持最佳状态

琢磨琢磨。 1️⃣ 更新系统软件源,确保 OpenSSL 与 PostgreSQL 均为最新版本。

sudo apt update && sudo apt upgrade -y
sudo apt install postgresql postgresql-contrib pgadmin4 nginx openssl

2️⃣ 检查防火墙规则, 打开 5432以及 443端口, 站在你的角度想... 让外部的请求能够顺畅而平安地到达。

sudo ufw allow 5432/tcp
sudo ufw allow https

别忘了 敞开胸怀迎接新技术,就像春天里给小树浇水;每一次升级都是对未来的一次深情拥抱。

二、 生成自签名证书:用手中的钥匙点亮平安灯塔

自签名证书是入门级的守护者,足以满足内部网络或测试环境的需求。打开终端, 输入以下指令:

如何通过Ubuntu PgAdmin配置SSL加密连接以保障PostgreSQL数据库安全?
mkdir -p /etc/ssl/pgadmin
cd /etc/ssl/pgadmin
# 生成私钥
openssl genrsa -out pgadmin.key 4096
# 创建证书签名请求
openssl req -new -key pgadmin.key -out pgadmin.csr \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=MyCompany/OU=IT Department/CN=pgadmin.mycompany.com"
# 用私钥自签名生成证书,有效期365天
openssl x509 -req -days 365 -in pgadmin.csr -signkey pgadmin.key -out pgadmin.crt

他急了。 此时你已经拥有了两把钥匙——pgadmin.key和 pgadmin.crt。把它们放在平安目录, 并确保只有 root 能读取:

chmod 600 pgadmin.key pgadmin.crt
chown root:root pgadmin.key pgadmin.crt

三、让 PostgreSQL 开启 SSL 支持:让数据在隧道中自由飞翔

编辑 PostgreSQL 主配置文件 /etc/postgresq 别犹豫... l/14/main/postgresql.conf加入或修改以下几行:

ssl = on
ssl_cert_file = '/etc/ssl/pgadmin/pgadmin.crt'
ssl_key_file = '/etc/ssl/pgadmin/pgadmin.key'
# 可选:使用更强的加密套件
ssl_ciphers = 'HIGH:!aNULL:!MD5'

接着,在 /etc/postgresql/14/main/pg_hba.conf 中为需要加密的用户添加 “hostssl” 条目,比方说:,我深信...

hostssl    all    all    0.0.0.0/0    md5
hostssl    all    all    ::/0         md5

保存后重启服务:

sudo systemctl restart postgresql

四、配置 pgAdmin4 Web 模式:让管理界面同样披上 HTTPS 的外衣

我们将 Nginx 当作反向代理,把外部对 https://yourdomai 不堪入目。 n.com/pgadmin4 的访问转发到本地运行的 pgAdmin4 服务。

# /etc/nginx/sites-available/pgadmin4.conf
server {
    listen 443 ssl;
    server_name yourdomain.com;
    ssl_certificate     /etc/ssl/pgadmin/pgadmin.crt;
    ssl_certificate_key /etc/ssl/pgadmin/pgadmin.key;
    location / {
        proxy_pass http://127.0.0.1:5050;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

启用站点并重新加载 Nginx:

sudo ln -s /etc/nginx/sites-available/pgadmin4.conf /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

五、 在 pgAdmin 中添加 SSL 数据库连接:一步到位的心动体验

  • 步骤一:打开浏览器访问 https://yourdomain.com/pgadmin4首次访问会提示信任自签名证书,只需点击“继续前往”。这就像第一次踏入森林,却已经感受到清新的空气。
  • 步骤二:在左侧树形结构中右键 “Servers” → “Create” → “Server”。填写基本信息后切换到 “Connection” 标签页。
  • 步骤三:勾选 “SSL mode”,选择 “require”。如果你想更严格,可以选 “verify-full”,并填入证书路径。保存后你会看到绿色的小锁图标,这正是平安之门已悄然开启。

六、 常见问题速查表——让困惑瞬间消散如春风拂面

问题描述可能原因解决方案要点
PgAdmin 报错 “SSL connection is not allowed” - PostgreSQL 未开启 ssl - 客户端使用了非 SSL 模式 - 确认 postgresql.conf 中 ssl=on - 在连接设置里将 SSL mode 改为 require 或 verify-full
Nginx 返回 502 Bad Gateway - PgAdmin 服务未启动或监听错误端口 - 检查 systemctl status pgad​min4 - 确认 proxy_pass 指向正确地址
浏览器提示证书不受信任 - 使用自签名证书未导入根证书 - 在浏览器中手动信任该证书 - 或购买受信任 CA 的正式证书
Ssl ciphers 错误导致连接被拒绝 - 配置了不支持的加密套件 - 使用 openssl ciphers 命令查看支持列表 - 删除不兼容项后重启 PostgreSQL
Pgbouncer 等中间件无法转发 SSL 请求 - 中间件未开启 TLS 支持 - 在 pgbouncer.ini 中添加 tls_cert_file 与 tls_key_file 配置,再重启 pgbouncer

七、精选工具对比表——挑选适合自己的“平安装备” 🎯

#️⃣ 产品名称
OpenSSL 命令行全能王,可生成 CSR、签发证书、检查链路完整性。TLS 1.3 完美支持 ★★★★★
LibreSSL 体积小、 依赖少,适合容器化部署。TLS 1.2‑1.3 ★★★★☆
GnuTLS API 丰富,可嵌入 C/C++ 项目。TLS 1.3 ★★★☆☆
Certbot 一键申请 Let’s Encrypt 免费可信证书。LetsEncrypt CA

从上表可以看出, 即便是开源免费工具,也能提供企业级别的加密保障。挑选时请结合项目规模与维护成本做决定;正如种树要选适合本土气候的品种,一颗小树才能长成参天大木,嗐...。

八、 进阶加固技巧:让平安层层叠叠,如春雨润物细无声

  • Cipher Suite 精简:Ssl_ciphers 建议只保留 HIGH 等级以上,加上 !aNULL !MD5 等排除弱算法;这样即便攻击者拿出超级计算机,也只能望洋兴叹。
  • Password Policy:PGA 管理员账户密码务必使用长度≥16且包含大小写字母、 数字与特殊字符;定期轮换密码,如同每年给树木施肥,让根系保持活力。
  • MFA 多因素认证:PGA 4 已内置 TOTP 支持, 为登录再添一道动态验证码关卡;这一步相当于在树干上绑上防盗锁链,偷盗者只能望而却步。
  • Audit Logging:PGA 可开启查询日志并通过 rsyslog 转存至远程日志服务器;如此一来 即使出现异常,也能快速追溯,如同给森林装上监控摄像头。
  • DDoS 防护与限流:Nginx 可以利用 limit_req 模块限制每秒请求次数;防止恶意流量把我们的“绿洲”冲刷殆尽。

九、 ——以技术之光浇灌数据之林,让希望永驻 🌱🌳💚

配置完毕后用 psql 或任何客户端尝试一次带有 ?sslmode=require 参数的连接,如果出现绿色锁标志,那就是成功绽放的花朵。此时 你已经为团队搭建了一道不可轻易穿透的防线;也为自己的人生添了一笔值得骄傲的成就感——正如每一次植树,都在为子孙后代留下清新的空气与丰盈的大地。

L​et's keep coding, keep planting, and keep believing that every l 太水了。 ine of secure code is a seed that will grow into a forest of trust.


标签:Ubuntu