簡體   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