[英]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.