通过SSL进行Postgresql LDAP身份验证

时间:2014-02-05 22:19:10

标签: postgresql ssl ldap

如何在Ubuntu服务器12.04上设置postgresql 9.1,以通过SSL对Windows AD服务器使用LDAP身份验证。

客户端SSL已设置并可在postgresql中使用。

没有SSL的LDAP。

在pg_hba.conf中我有这个:

hostssl  ldaptest all   0.0.0.0/0 ldap ldapserver="myldapserver.local" ldapprefix="cn=" ldapsuffix=", ou=TestOU, dc=sub, dc=example, dc=local"

我可以使用psql连接,但密码是按预期未加密发送的。

如果我将其设置为在普通端口(389)上使用TLS:

hostssl  ldaptest all   0.0.0.0/0 ldap ldapserver="myldapserver.local" ldapprefix="cn=" ldapsuffix=", ou=TestOU, dc=sub, dc=example, dc=local" ldaptls=1

我明白了:

could not start LDAP TLS session: error code -11

如果我将其设置为使用LDAPS端口(636)来使用SSL:

hostssl  ldaptest all   0.0.0.0/0 ldap ldapserver="myldapserver.local" ldapprefix="cn=" ldapsuffix=", ou=TestOU, dc=sub, dc=example, dc=local" ldaptls=0 ldapport=636

我明白了:

LDAP login failed for user "cn=Teszt User,ou=TestOU,dc=sub,dc=example,dc=local" on server "ratotdc.okologia.mta.local": error code -1

如果我打开两个TLS并将端口设置为636,我得到:

could not start LDAP TLS session: error code -11

我的ldap.conf中有服务器证书:

TLS_CACERT      /root/certs/infolabtest_cert.cer 

ldapsearch通过SSL工作并返回正确的结果:

ldapsearch -W -H ldaps://myldapserver:636/ -D "CN=Teszt User,OU=TestOU,DC=sub,DC=example,DC=local" -b "ou=testou,dc=sub,dc=example,dc=local" "CN"

欢迎任何想法。

2 个答案:

答案 0 :(得分:1)

有点困难。我在这里找到了答案:http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol

  

保护LDAP通信的常用替代方法是使用   SSL隧道。这在LDAP URL中使用URL方案表示   “LDAPS”。 LDAP over SSL的默认端口是636.使用LDAP   over SSL在LDAP版本2(LDAPv2)中很常见,但它永远不会   在任何正式规范中标准化。这种用法已经存在   与LDAPv2一起被弃用,LDAPv2于2003年正式退役。

Posgres不支持LDAPv2(e.i。ldpas://),但它支持LDAPv3 TLS

答案 1 :(得分:1)

Postgres现在根据documentation

从版本11开始支持 ldaps://

因此pg_hba.conf中的配置如下:

host  ldaptest all   0.0.0.0/0 ldap ldapulr="ldaps://myldapserver.local:636/ou=testou,dc=sub,dc=example,dc=local?cn?sub"