为什么 postgres 在通过 ssl 连接时会抱怨“ca md 太弱”

为什么 postgres 在通过 ssl 连接时会抱怨“ca md 太弱”

我正在尝试设置一个仅具有 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,那么您需要自己编辑它。

相关内容