如何为psql指定客户端证书?

Jor*_*orn 14 postgresql psql ssl-certificate

我有一个 Postgres 服务器,它的用户dev需要一个客户端证书才能登录。我正在使用命令psql "sslmode=require user=dev host=db.prod",它给了我psql: FATAL: connection requires a valid client certificate.

我知道证书在我的服务器上的位置。我的问题是,如何将客户端证书位置指定为psql

小智 15

最终结果看起来像 $>psql "port=5431 host=localhost user=postgres sslcert=./test/client.crt sslkey=./test/client.key sslrootcert=./test/server.crt sslmode=verify-ca"

所有的变量都在这里

  • 如果我将 root crt 放在 ~/.postgreqsl/ 中,我不必提供任何密钥。如果我把它放在其他地方并提供 sslrootcert,突然我还必须提供密钥 - 你知道这是如何工作的吗? (2认同)

Jor*_*orn 9

正如@Milen 链接的文档中所述,您可以通过设置PGSSLCERTPGSSLKEY环境变量或添加sslcert=<cert location> sslkey=<key location>到连接字符串来实现此目的。

  • 我会在这里注意到`PGSSLCERT` 和`PGSSLKEY` 也允许指定***paths***,所以不要将证书或密钥本身`cat` 到这些变量中。 (2认同)