You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 16 SSL配置错误致无法连接登录求助

PostgreSQL 16 SSL连接问题排查步骤

1. 修复SSL证书生成错误

你遇到的两个证书问题都是生成环节操作有误:

  • ee key too small:PostgreSQL 16已禁用1024位密钥,必须使用2048位及以上的密钥
  • no start line+空server.crt:证书生成命令未正确输出内容,大概率是操作遗漏或命令错误

直接执行以下命令重新生成证书(建议切换到postgres用户操作,或生成后修改文件权限):

# 生成2048位私钥,设置仅postgres可读权限
openssl genrsa -out server.key 2048
chmod 600 server.key
chown postgres:postgres server.key

# 生成自签名证书,有效期365天
openssl req -new -x509 -key server.key -out server.crt -days 365

执行第二个命令时,按提示填写国家、组织等信息即可(内容不影响证书有效性),确保生成后的server.crt不为空文件。将生成的server.key和server.crt移动到PostgreSQL数据目录(默认路径如/var/lib/postgresql/16/main/)。

2. 检查证书文件权限

PostgreSQL的postgres用户必须拥有证书文件的读取权限,否则会加载失败:

ls -l /path/to/postgres/data/server.key server.crt

确保文件所有者为postgres:postgres,server.key权限为-rw-------(600),server.crt权限为-rw-r--r--(644)。

3. 核对postgresql.conf SSL配置

确保以下参数设置正确:

ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'

若证书不在数据目录内,需填写绝对路径(如/etc/postgresql/16/main/server.crt)。

4. 调整pg_hba.conf连接规则

针对127.0.0.1连接拒绝问题,需确保配置允许本地SSL连接,添加或修改规则(放在规则列表靠前位置,优先匹配):

hostssl  all  all  127.0.0.1/32  scram-sha-256

若需先测试服务启动状态,可临时添加非SSL本地连接规则:

host  all  all  127.0.0.1/32  scram-sha-256

修改pg_hba.conf后必须重启PostgreSQL服务。

5. 重启服务并验证状态

执行重启命令:

sudo systemctl restart postgresql@16-main

查看日志(默认路径/var/log/postgresql/postgresql-16-main.log),确认无FATAL级错误,说明服务启动正常。

6. 测试连接

先切换到postgres用户测试本地连接:

sudo su postgres
psql

若能登录,再测试SSL连接:

psql "host=127.0.0.1 port=5432 dbname=postgres user=postgres sslmode=require"

若仍提示连接拒绝,检查服务运行状态和端口监听:

# 检查服务状态
sudo systemctl status postgresql@16-main
# 检查5432端口是否被监听
ss -tulpn | grep 5432

内容的提问来源于stack exchange,提问作者user21819272

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:08:33