[Date Prev][Date Next] [Chronological] [Thread] [Top]

ldap not finding internal CA?



Hello all,

On Ubuntu, I have set up an LDAP server and am authenticating to it over SSL for my LDAP queries. I had it working on previous Ubuntu releases, but something seems to have changed in the newest release (maybe this: http://www.debian-administration.org/users/dkg/weblog/ 42). I am having trouble figuring out exactly what is breaking.

Some background: I have set up my own CA and generated a certificate for it, which the LDAP server is using. Without specifying this CA, I get "self-signed certificate" errors when connecting:

root@host:# openssl s_client -connect my.ldap.server:636 -showcerts
CONNECTED(00000003)
<... trimmed certificate information ...>
verify error:num=19:self signed certificate in certificate chain
verify return:0
<... trimmed more certificate information ...>



If I specify the path to my internal CA file, I receive no errors:

root@host:# openssl s_client -connect my.ldap.server:636 -showcerts - CAfile /path/to/my/ca/file
CONNECTED(00000003)
<... trimmed certificate and internal CA information ...>
verify return:1
<... trimmed more certificate information ...>



That being said, I manually specified the path to my internal CA file in /etc/ldap/ldap.conf:

BASE    dc=my, dc=search, dc=base
URI     ldaps://my.ldap.server
TLS_CACERT      /path/to/my/ca/file
TLS_REQCERT     demand
TIMEOUT         4
NETWORK_TIMEOUT 2



This still allows no secure ldap queries:

root@host:# ldapsearch -x -d1
ldap_create
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP my.ldap.server:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying my.ldap.server.ip:636
ldap_pvt_connect: fd: 3 tm: 2 async: 0
ldap_ndelay_on: 3
ldap_int_poll: fd: 3 tm: 2
ldap_is_sock_ready: 3
ldap_ndelay_off: 3
ldap_pvt_connect: 0
TLS: peer cert untrusted or revoked (0x102)
TLS: can't connect: (unknown error code).
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)




Just to prove that the above configuration is the one being used, if I switch the above configuration to "TLS_REQCERT allow", the ldap queries bypass this issue:

root@myhost:# ldapsearch -x -d1 > /dev/null
ldap_create
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP auth01.rdc.internal:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 192.168.1.41:636
ldap_pvt_connect: fd: 3 tm: 2 async: 0
ldap_ndelay_on: 3
ldap_int_poll: fd: 3 tm: 2
ldap_is_sock_ready: 3
ldap_ndelay_off: 3
ldap_pvt_connect: 0
TLS: peer cert untrusted or revoked (0x102)
ldap_open_defconn: successful
<... trimmed rest of results ...>



My openldap is version 2.4.15 on Ubuntu Jaunty. Interestingly, I had the same message about self-signed certificates on previous Ubuntu versions, but querying ldap with "TLS_REQCERT demand" works fine.


So what is the solution to this problem? Do I switch to "TLS_REQCERT allow"? Or perhaps there's some way to debug why openldap is not seeing the internal CA file even though I've told it where to look?



Thanks for any pointers...

-Kurt