我正在尝试设置一个仅具有 openssl 访问权限的 postgres 服务器(版本 10.4)。我使用 easyrsa 版本 3 为用户和服务器创建了一个自签名 ca 以及必要的私钥和公钥,如所述这里并将其放入所述目录中这里. 之后我添加了这一行
hostssl all myname 192.168.0.0/16 cert
按照pg_hba.conf
描述这里和这里
但是当我尝试使用以下方式连接数据库时
psql -h 192.168.0.222 "sslmode=verify-ca sslcert=myname.crt sslkey=myname.key"
弹出此错误信息
couldn't read certificate "myname.crt": ca md too weak
并在服务器日志中
couldn't accept SSL-connection: success
(也许这些信息并不正确,因为我是从德语翻译过来的)
这很有趣,因为当我用
easyrsa show-cert myname
我看到了以下几行(以及更多):
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
don't show it here
Signature Algorithm: sha256WithRSAEncryption
我的根证书 ca.crt 和 postgres 服务器的证书也是一样。所以很明显证书是用 sha256 方法签名的,而不是用 md 签名的。
更有趣的是,一开始它能用,但几天后,当我再次尝试时,出现了上述错误消息,我很确定我当时没有更改任何配置。也许中间有一些 openssl 或 postgresql 的更新。
答案1
检查openssl*.cnf
您使用 Easy-RSA 的文件。在[ CA_default ]
部分中有一个选项default_md
应设置为sha256
。
如果您实际使用了easyrsa
当前 3.x 版 Easy-RSA 附带的脚本,那么它openssl*.cnf
附带的文件中已经正确设置了这一点。如果您使用的是 2.x 版 Easy-RSA,那么您需要自己编辑它。