需在Navicat连接设置中勾选“Use SSL”并设SSL mode为require或verify-full;确保证书路径用正斜杠、无空格中文;服务端须开启ssl=on、正确配置ssl_cert_file/ssl_key_file及pg_hba.conf认证方式。
PostgreSQL连接报错“SSL connection is required”怎么解决
这是最常见的情况:服务器强制要求 ssl,但 navicat 默认没启用。不是证书配错了,而是压根没开 ssl 开关。
- 在 Navicat 连接编辑界面,点「高级」选项卡 → 勾选
Use SSL - 把
SSL mode设为require(最低要求)或verify-full(推荐,但需配套证书) - 如果只设
require且服务端支持,连得上但不校验证书;verify-full则必须提供SSL root certificate文件路径 - 别信某些教程说“填了证书路径就自动生效”——没勾
Use SSL,其他全白搭
Navicat里填的SSL证书路径为什么总提示“file not found”
Navicat 在 Windows/macOS 上对路径解析很死板,尤其容易栽在斜杠、空格和相对路径上。
- 证书文件(如
root.crt)必须是 PEM 格式,不能是 PFX 或 DER - 路径用正斜杠
/,哪怕在 Windows 上也要写成C:/certs/root.crt,反斜杠\会失败 - 路径里不能有中文、空格或括号;建议放到
C:/pg-ssl/这类干净路径下 - Navicat 不支持环境变量或波浪号
~,~/certs/root.crt或%USERPROFILE%\certs\root.crt全部无效
PostgreSQL服务端没开SSL,Navicat硬配证书也没用
客户端配得再细,服务端没启用 SSL 就是单向徒劳。先确认服务端状态:
- 登录服务器,查
pg_settings:运行SELECT name, setting FROM pg_settings WHERE name LIKE 'ssl%'; - 关键字段
ssl = on必须为on,且ssl_cert_file和ssl_key_file指向有效文件 - 修改
postgresql.conf后必须重启 PostgreSQL(不是 reload),否则配置不生效 -
pg_hba.conf里对应连接规则的第 4 列要含scram-sha-256或cert,不能只写md5
用 verify-full 模式连不上,但 require 可以,问题出在哪
说明服务端 SSL 是通的,但证书链校验失败。常见于自签名证书或中间 CA 缺失。
-
verify-full要求:客户端提供的root.crt必须能签发服务端证书,且连接时host名必须和证书里的Common Name或Subject Alternative Name完全一致 - 检查证书:用
openssl x509 -in server.crt -text -noout看 CN 和 SAN 字段 - Navicat 连接设置里的
Host填的是db.example.com,但证书里写的是localhost?直接拒连 - 如果用的是自签名证书,
root.crt就是那个自签 CA 的公钥,不是服务端的server.crt
真正卡住人的地方,往往不是不会配,而是分不清哪一步该在客户端做、哪一步非得去服务器改。尤其是 pg_hba.conf 的认证方法和 ssl 配置,漏一个,前端所有证书操作都是无用功。











