Postgresql
為 PostgreSQL 設置基於 SSL/TLS (LDAPS) 的安全 LDAP
嘗試幾種方法為 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) If
SSL
設置為on
或在 中註釋postgresql.conf
。只需替換host
為hostssl
(請參閱上面的配置)。第 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
儘管具體細節因發行版而異。