I'm in the process
of setting up my slapd server to operate over
LDAPS and having trouble when using a CA certificate (being
my own certificate authority). I've been able to setup
LDAPS when using a self-signed server certificate:
root@baneling:~# slapcat -H
ldap:///cn=config??base
dn: cn=config
objectClass: olcGlobal
cn: config
olcArgsFile: /var/run/slapd/slapd.args
olcLogLevel: none
olcPidFile: /var/run/slapd/slapd.pid
olcToolThreads: 1
structuralObjectClass: olcGlobal
entryUUID: 0e827846-3926-1033-9f74-632898b715c9
creatorsName: cn=config
createTimestamp: 20140306025210Z
olcTLSCertificateFile: /etc/ssl/certs/ldap.harmonywave.com.crt
olcTLSCertificateKeyFile:
/etc/ssl/private/ldap.harmonywave.com.key
olcTLSCipherSuite: SECURE256
olcTLSVerifyClient: never
entryCSN: 20140308131751.026022Z#000000#000#000000
modifiersName:
gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20140308131751Z
This works fine and I'm able to authenticate
clients. However if I use a
CA certificate (again, being my own CA) to sign my server
certificate and then change olcTLSVerifyClient to demand and add
olcTLSCACertificateFile then I can no
longer authenticate. I've installed my CA
certificate on the client machine
and pointed both ldap.conf and nslcd.conf to the CA certificate.
However I get the following when
debugging:
root@baneling:~# slapd -d conns -h
ldaps:///
531b1cef @(#) $OpenLDAP: slapd (Apr 23 2013
12:16:04) $
root@lupin:/tmp/buildd/openldap-2.4.31/debian/build/servers/slapd
531b1cf0 slapd starting
531b1cf0 daemon: added 3r listener=(nil)
531b1cf0 daemon: added 6r
listener=0x7fe2d98326e0
531b1cf0 daemon: added 7r
listener=0x7fe2d98327c0
531b1cf0 daemon: epoll: listen=6
active_threads=0 tvp=zero
531b1cf0 daemon: epoll: listen=7
active_threads=0 tvp=zero
531b1cf0 daemon: activity on 1 descriptor
531b1cf0 daemon: activity on:531b1cf0
531b1cf0 daemon: epoll: listen=6
active_threads=0 tvp=zero
531b1cf0 daemon: epoll: listen=7
active_threads=0 tvp=zero
531b1cf4 daemon: activity on 1 descriptor
531b1cf4 daemon: activity on:531b1cf4
531b1cf4 daemon: epoll: listen=6 busy
531b1cf4 daemon: epoll: listen=7
active_threads=0 tvp=zero
531b1cf4 daemon: activity on 1 descriptor
531b1cf4 daemon: activity on:531b1cf4
531b1cf4 daemon: epoll: listen=6
active_threads=0 tvp=zero
531b1cf4 daemon: epoll: listen=7
active_threads=0 tvp=zero
531b1cf4 daemon: listen=6, new connection on
12
531b1cf4 daemon: added 12r (active)
listener=(nil)
531b1cf4 daemon: activity on 1 descriptor
531b1cf4 daemon: activity on:531b1cf4
12r531b1cf4
531b1cf4 daemon: read active on 12
531b1cf4 daemon: epoll: listen=6
active_threads=0 tvp=zero
531b1cf4 daemon: epoll: listen=7
active_threads=0 tvp=zero
531b1cf4 daemon: activity on 1 descriptor
531b1cf4 daemon: activity on:531b1cf4
531b1cf4 daemon: epoll: listen=6
active_threads=0 tvp=zero
531b1cf4 daemon: epoll: listen=7
active_threads=0 tvp=zero
531b1cf4 daemon: activity on 1 descriptor
531b1cf4 daemon: activity on:531b1cf4
531b1cf4 daemon: epoll: listen=6
active_threads=0 tvp=zero
531b1cf4 daemon: epoll: listen=7
active_threads=0 tvp=zero
531b1cf4 daemon: activity on 1 descriptor
531b1cf4 daemon: activity on:531b1cf4
12r531b1cf4
531b1cf4 daemon: read active on 12
531b1cf4 daemon: epoll: listen=6
active_threads=0 tvp=zero
531b1cf4 daemon: epoll: listen=7
active_threads=0 tvp=zero
TLS: can't accept: The peer did not send any
certificate..
531b1cf4 connection_closing: readying
conn=1000 sd=12 for close
531b1cf4 daemon: removing 12
531b1cf4 daemon: activity on 1 descriptor
531b1cf4 daemon: activity on:531b1cf4
Why would the client not send
the certificate if I've pointed TLS_CACERT in
ldap.conf and tls_cacertfile
to that cert? Maybe I'm misunderstanding
the basic concepts here, I am pretty new to a
lot of this. I'm using OpenLDAP 2.4.31,
Debian 7, and GnuTLS. Yes, I'm aware of its recent critical security
bug
and the warnings against it
from this group (http://www.openldap.org/lists/openldap-devel/200802/msg00072.html).
Thanks,
Joshua