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