psql客户端证书链

时间:2017-05-02 22:17:57

标签: postgresql ssl psql

我正在尝试使用ssl设置PostgreSQL数据库服务器。或者更具体地说,我已成功设置服务器并且ssl正在工作......只要没有中间证书。如果有中间证书,它就无效。

背景/设置:

  • 我有一个根CA.cert
  • 我使用CA签署了intermediate.csr并创建了intermediate.cert
  • 我使用intermediate.cert对postgres.csr进行签名并创建postgres.cert
  • 服务器上已安装CA.certpostgres.keypostgres.cert
  • CA.cert已设置为可信证书。
  • postgresql.conf已修改为指向上述文件。
  • 我使用intermediate.cert签署了client_0.csr并创建了client_0.cert
  • 我使用CA.cert签署了client_1.csr并创建了client_1.cert
  • 我创建了一个客户chain.certcat client_0.cert intermediate.cert > chain.cert

已使用适当的扩展,两个客户端证书的公用名都设置为要连接的数据库的(用户名)。

有趣,又名问题。

psql "sslmode=require hostname=(host) db=(db) sslcert=client_1.cert sslkey=client_1.key" -U (username):非常成功!

psql "sslmode=require hostname=(host) db=(db) sslcert=client_0.cert sslkey=client_0.key" -U (username)alert unknown ca。这是预期的,client_0.cert未由CA.cert签署。

psql "sslmode=require hostname=(host) db=(db) sslcert=chain.cert sslkey=client_0.key" -U (username)alert unknown ca。哦,哦。

混乱

连接到启用了ssl和中间证书的postgresql实例的文档:

  

在某些情况下,客户端证书可能由a签名   “中间”证书授权,而不是直接授权   受服务器信任。要使用此类证书,请附加   然后是postgresql.crt文件的签名权限证书   其父权限的证书,以及证书等   服务器信任的权限,“root”或“intermediate”,   即由服务器的root.crt文件中的证书签名。   https://www.postgresql.org/docs/9.6/static/libpq-ssl.html

我也试过捕捉完整的链client inter ca > chain,什么也没做。

问题

我在这里做错了什么?

谢谢,

0 个答案:

没有答案