Postgresql

為 PostgreSQL 設置基於 SSL/TLS (LDAPS) 的安全 LDAP

  • January 11, 2022

嘗試幾種方法為 PostgreSQL 實現 LDAPS 時運氣不佳。

pg_hba.conf

hostssl all +test_ldap 0.0.0.0/0 ldap ldapserver=dc2.ad.foobar.com ldapport=636 ldapscheme=ldaps ldaptls=0 ldapbinddn="CN=ldap,OU=Helpers,OU=Foobar,DC=ad,DC=foobar,DC=com" ldapbindpasswd=*** ldapsearchattribute=mail ldapbasedn="OU=Users,OU=Foobar,DC=ad,DC=foobar,DC=com"

經過研究,我發現以下參數要更改。

postgresql.conf

ssl = on
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'

問題是我如何獲得.crt.key.pem我已經擁有的證書(由 LDAP 團隊共享)。除了這些之外,還需要做些什麼才能使其與 LDAPS (SSL/TLS) 一起工作。

這聽起來很奇怪,但是您不需要任何證書來使 LDAPS 工作。我花了無數個小時,但解決方案是 1 班輪。

第1步:

將以下行添加到/etc/openldap/ldap.conf(可能因發行版而異)

TLS_REQCERT never

第2步:

確保您的pg_hba.conf.

i) 如果SSL設置為off或在 中註釋postgresql.conf。使用下面的條目

host all +test_ldap 0.0.0.0/0 ldap ldapserver=dc2.ad.foobar.com ldapport=636 ldapscheme=ldaps ldaptls=0 ldapbinddn="CN=ldap,OU=Helpers,OU=Foobar,DC=ad,DC=foobar,DC=com" ldapbindpasswd=*** ldapsearchattribute=mail ldapbasedn="OU=Users,OU=Foobar,DC=ad,DC=foobar,DC=com

ii) IfSSL設置為on或在 中註釋postgresql.conf。只需替換hosthostssl(請參閱上面的配置)。

第 3 步:

進行更改後,以超級使用者身份登錄您的 psql 客戶端並執行以下命令。或者,如果您負擔得起數據庫的停機時間,只需重新啟動postgresql.service.

SELECT pg_reload_conf();

我從來沒有這樣做過,但我的理解是證書需要配置到您的 LDAP 庫配置中,而不是您的 PostgreSQL。所以這可能會在/etc/ldap/ldap.conf. 此外,不會有鑰匙。您只是在驗證證書,而不是簽署新證書。

在您評論中的連結中,第二個僅描述使用 TLS 進行客戶端到數據庫的連接,而不是數據庫到 LDAP 伺服器的連接。第一個連結描述了兩者,但沒有很清楚地解釋哪個部分與哪個功能有關。LDAP 是他們所做的,/etc/pki/ca-trust/source/anchors/ad-ca.cer儘管具體細節因發行版而異。

引用自:https://dba.stackexchange.com/questions/305720