繁体   English   中英

如何使用 OpenSSL 为 Postgresql DB 的多个用户创建客户端证书?

[英]How to create client certificate for multiple users for Postgresql DB with OpenSSL?

在我的数据库环境(Oracle Linux 8 上的 Postgresql 13)中,我可以为特定的 postgresql db 用户创建一个客户端证书,如下所示:

openssl req -new -nodes -out client.csr \
  -keyout keys/client.key -subj "/CN={db_username}"

虽然它适用于一个用户名,但我想知道是否可以使用多个用户名或通配符。 例如,它可以像这样使用:

CN=user1,user2,user3 

或类似的东西?

不,但正如文档所述,您可以在pg_ident.conf文件中使用映射:

用户名映射可用于允许cn与数据库用户名不同。

因此,您可以为多个数据库用户使用一个证书(具有单一名称)。

例如, pg_hba.conf的行可能看起来像

# TYPE  DATABASE  USER   ADDRESS         METHOD
host    mydb      user1  12.34.56.78/32  cert map=mymap
host    mydb      user2  12.34.56.78/32  cert map=mymap
host    mydb      user3  12.34.56.78/32  cert map=mymap

然后pg_ident.conf可能看起来像

# MAPNAME  SYSTEM-USERNAME   PG-USERNAME
mymap      certuser          user1
mymap      certuser          user2
mymap      certuser          user3

此处, certuser是证书中的通用名称。

经过多次尝试后,我发现如果我像这样配置pg_hba.conf ,我的连接并不关心客户端证书中的 CN:

hostssl    all    all    192.168.1.34/32    scram-sha-256     clientcert=1

这样,只要所需的密钥和证书可用,就可以建立连接。 此外,还需要密码以确保连接安全。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM