gpt4 book ai didi

postgresql - postgres jdbc 客户端证书用户与数据库用户

转载 作者:行者123 更新时间:2023-11-29 13:00:27 25 4
gpt4 key购买 nike

背景故事:

我已经让 jdbc 使用客户端证书连接到 postgres。在 java 中,我在属性中设置用户,驱动程序在 keystore 中查找并发送它。一切都很好。

但我刚刚发现我不会获得 CN 为 pg-user 的证书。我将获得的证书的 CN 为 pg-user.XYZ.foo.com & pg-user.ABC.foo.com。这看起来像是 username maps 的工作.嘿,他们甚至有正则表达式,这将是完美的。

我使用用户名映射和使用 psql -d db -U pg-user 的本地身份验证让 unix 用户 root 以 pg-user 身份登录到 postgres。但是在那种情况下,postgres 知道两者用户是 root,并且正尝试以 pg-user 身份登录。

问题:

我想不通的是如何告诉 postgres jdbc driver使用 pg-user.XYZ.foo.com 的 CN 从 keystore 获取证书,但作为用户 pg-user 呈现给 postgres。它似乎是控制两者的 user 的单个参数。有谁知道如何做到这一点?

This page包括连接选项列表,但它似乎没有提供拆分用户名的方法。我看到的最接近的是编写我自己的 sslfactory 的选项,我真的希望避免这种情况...

最佳答案

感谢@harmic 的评论,我得以解决这个问题。

从以下三个文件开始:

  • pg-user.pem CN 为 pg-user.XYZ.foo.com
  • pg-user-chain.pem 包含链证书
  • pg-user.private_key 包含证书的私钥

然后我像这样创建了 pkcs12 文件:

cat pg-user.pem pg-user-chain.pem > cert-and-chain.pem
openssl pkcs12 -export -out ssl_cert.p12 -in cert-and-chain.pem -name pg-user -inkey private_key.pem -passout pass:{password here}

之后,我将连接的用户属性声明为 pg-user,并且成功了。为了测试,我将 pg_ident 中的正则表达式更改为不匹配,然后我无法再登录,我将其更改回来,我可以。

关于postgresql - postgres jdbc 客户端证书用户与数据库用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32000225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com