[Debian Sarge] OpenLDAP + OpenSSL = No-Go

Pagina: 1
Acties:

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 20-02 07:05
Voor mijn 'new-and-improved' router/ servertje wil ik graag gebruik maken van LDAP in combinatie met Samba als PDC, maar dat terzijde. Ik ben nu al een uurtje of 12 10 bezig met het opzetten van SSL, maar dit wil niet erg vlotten.

Ik gebruik deze howto om de boel op te zetten. De pakketten in Debian Sarge zijn standaard voorzien van ssl- ondersteuning, dus ik gebruik gewoon de voorgecompileerde pakketten.

Mijn /etc/hosts ziet er zo uit:
127.0.0.1 localhost
#192.168.0.1 router.thuis.lan router
192.168.0.1 ldap.thuis.lan
Dit om ervoor te zorgen dat ik ldap.thuis.lan kan gebruiken als FQDN.

Om SSL aan de praat te krijgen, volg ik de volgende howto: LDAP HOWTOConfigureSSLAuthorityCreation.

Dit komt neer op:
code:
1
2
#cd /etc/ldap
#/usr/lib/ssl/misc/CA.pl -newca

Daar deze gegevens invoeren:
code:
1
2
3
4
5
6
7
Country Name (2 letter code) [AU]:NL
State or Province Name (full name) [Some-State]:Netherlands
Locality Name (eg, city) []:Hoogeveen
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Van der Veen
Organizational Unit Name (eg, section) []: LDAP SSL Certificate Authority
Common Name (eg, YOUR name) []: ldap.thuis.lan
Email Address []:jaapjan@thuis.lan


Vervolgens moet ik een certificaat signing request maken en laten ondertekenen door mijn CA:LDAP HOWTOConfigureSSLCertificateCreation

De volgende commando's:
code:
1
#openssl req -new > new.cert.csr

De volgende gegevens:
code:
1
2
3
4
5
6
7
Country Name (2 letter code) [AU]:NL
State or Province Name (full name) [Some-State]:Netherlands
Locality Name (eg, city) []:Hoogeveen
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Van der Veen
Organizational Unit Name (eg, section) []:LDAP SSL
Common Name (eg, YOUR name) []:ldap.thuis.lan
Email Address []:jaapjan@thuis.lan


Vervolgens:
code:
1
2
3
4
5
#openssl rsa -in privkey.pem -out new.cert.key
#cat privkey.pem > newreq.pem
#cat new.cert.csr >>newreq.pem
#/usr/lib/ssl/misc/CA.pl -signreq
#cp cp new.cert.key server.key


Daarna plak ik het gedeelte
code:
1
2
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----

van newcert.pem in server.cert.

Tot slot heb ik de /etc/ldap/slapd.conf aangepast en er het volgende ingezet (de genoemde bestanden bestaan):
code:
1
2
3
4
5
TLSCipherSuite HIGH:MEDIUM:+SSLv2
TLSCertificateFile /etc/ldap/server.cert
TLSCertificateKeyFile /etc/ldap/server.key
TLSCACertificateFile /etc/ldap/demoCA/cacert.pem
TLSVerifyClient 0


Permissies goedzetten:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#chown -R slapd:slapd *
#chmod -R 440 new* privkey.pem server* demoCA/*
#ls -l
total 21
drwxr-xr-x    6 slapd    slapd        1024 Apr 21 17:57 demoCA
-rwxrwx---    1 slapd    slapd         333 Oct 18  2003 ldap.conf
-r--r-----    1 slapd    slapd         725 Apr 21 17:55 new.cert.csr
-r--r-----    1 slapd    slapd         891 Apr 21 17:55 new.cert.key
-r--r-----    1 slapd    slapd        3853 Apr 21 17:57 newcert.pem
-r--r-----    1 slapd    slapd        1688 Apr 21 17:56 newreq.pem
-r--r-----    1 slapd    slapd         963 Apr 21 17:55 privkey.pem
drwxrwx---    2 slapd    slapd        1024 Apr 21 00:52 schema
-r--r-----    1 slapd    slapd        1456 Apr 21 17:58 server.cert
-r--r-----    1 slapd    slapd         891 Apr 21 17:58 server.key
-rw-------    1 slapd    slapd        1199 Apr 21 15:19 slapd.conf
-r--r-----    1 slapd    slapd        3558 Apr 21 00:52 slapd.conf_orig


Nu start ik de server met:
code:
1
/usr/sbin/slapd -u slapd -h 'ldap://0.0.0.0/ ldaps://0.0.0.0/' -d 1


Met
code:
1
2
ldapsearch -b "ou=People,dc=thuis,dc=lan" -LLL -D "cn=manager,dc=thuis,dc=lan" 
-H "ldap://ldap.thuis.lan/" -W -x "(uid=jaapjan)"
krijg ik netjes de gegevens van jaapjan, maar als ik ldaps:// gebruik krijg ik:
code:
1
2
3
Enter LDAP Password:
ldap_bind: Can't contact LDAP server (81)
        additional info: Error in the certificate.
op de client en
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
connection_get(8): got connid=1
connection_read(8): checking for input on id=1
connection_get(8): got connid=1
connection_read(8): checking for input on id=1
TLS certificate verification: depth: 0, err: -49, subject: -unknown-, issuer: -unknown-
TLS certificate verification: Error, Unknown error
connection_read(8): unable to get TLS client DN error=49 id=1
connection_get(8): got connid=1
connection_read(8): checking for input on id=1
ber_get_next
ber_get_next on fd 8 failed errno=0 (Success)
connection_read(8): input error=-2 id=1, closing.
connection_closing: readying conn=1 sd=8 for close
connection_close: conn=1 sd=8
op de server.

Nu heb ik wel wat gegoogled met deze input, maar ik krijg er niet echt zinnige informatie uit. googlen op "unable to get TLS client DN error" levert bijvoorbeeld deze discussie op, maar daar kan ik voor de rest niets mee.

Weet iemand van jullie wat hier mis is/ wat ik verkeerd doe, want ik kom hier niet echt uit :(.

[ Voor 6% gewijzigd door Jaap-Jan op 09-05-2004 10:17 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Verwijderd

doe is "openssl verify <cert>"

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 20-02 07:05
Aha, ik denk dat daar de schoen wringt:
code:
1
2
3
4
# openssl verify server.cert
server.cert: /C=NL/ST=Netherlands/L=Hoogeveen/O=Van der Veen/OU=LDAP SSL/CN=ldap.thuis.lan/
emailAddress=jaapjan@thuis.lan
error 20 at 0 depth lookup:unable to get local issuer certificate

code:
1
2
3
4
# openssl verify demoCA/cacert.pem
demoCA/cacert.pem: /C=NL/ST=Netherlands/L=Hoogeveen/O=Van der Veen/OU=LDAP SSL Certificate 
Authority/CN=ldap.thuis.lan/emailAddress=jaapjan@thuis.lan
error 18 at 0 depth lookup:self signed certificate
code:
1
2
3
4
p# openssl verify newcert.pem
newcert.pem: /C=NL/ST=Netherlands/L=Hoogeveen/O=Van der Veen/OU=LDAP SSL/CN=ldap.thuis.lan/
emailAddress=jaapjan@thuis.lan
error 20 at 0 depth lookup:unable to get local issuer certificate
Nog even wat verder kijken, ik heb nog maar weinig kaas gegeten van OpenSSL, maar ik heb al gevonden dat error 20 betekent dat mijn CA niet trusted is. Nu nog uitzoeken hoe ik hem wel trusted kan krijgen. Error 18 is voor het certificaat, wat niet trusted is. Wat en hoe moet ik ook nog uitzoeken.

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


  • Papillon
  • Registratie: Januari 2000
  • Laatst online: 23-09-2025

Papillon

Spring 's in the Air...

Je moet een ldapsearch doen met optie Z of ZZ als je perse wil dat de connectie encrypted tot stand komt. Bedenk echter ook dat als je met een CA key wil gaan werken deze eigenlijk door een derde (trusted) partij moet worden verstrekt.

In jouw situatie zou ik er alleen voor willen zorgen dat TLS werkt.

Kortom, probeer eens het volgende:
ldapsearch -b "ou=People,dc=thuis,dc=lan" -LLL -D "cn=manager,dc=thuis,dc=lan" -W -x -ZZ "(uid=jaapjan)"

F u cn rd ths, u mght hv a gd jb n cmptr prgmmng.


Verwijderd

Volgensmij moet je in ldap.conf opgeven wat je CA cert is.

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 20-02 07:05
Verwijderd schreef op 23 april 2004 @ 09:45:
Volgensmij moet je in ldap.conf opgeven wat je CA cert is.
Dat was de oplossing:
code:
1
TLS_CACERT /etc/ldap/demoCA/cacert.pem
toevoegen aan ldap.conf loste het probleem op:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
router:/etc/ldap# ldapsearch -b "ou=People,dc=thuis,dc=lan" -LLL -D "cn=manager,dc=thuis,dc=lan" \
-H "ldaps://ldap.thuis.lan/" -W -x "(uid=jaapjan)"
Enter LDAP Password:
dn: uid=jaapjan,ou=People,dc=thuis,dc=lan
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
objectClass: organizationalPerson
objectClass: inetLocalMailRecipient
uid: jaapjan
cn: Jaap-Jan van der Veen
sn: van der Veen
givenName: Jaap-Jan
title: Admin
userPassword:: e0NSWVBUfU1RTTI3Rll6YlJ3cXc=
labeledURI: http://members.home.nl/jjvdveen/
mail: jaapjan@thuis.lan
mail: jjvdveen@home.nl
loginShell: /bin/bash
uidNumber: 1001
gidNumber: 1001
homeDirectory: /home/jaapjan/
gecos: jaapjan_gecos-field
description: Not Available


Overigens gebruikte ik openssl verify verkeerd. Ik had ook moeten opgeven waar mijn ca- certificaat is te vinden:
code:
1
2
router:/etc/ldap# openssl verify -CAfile demoCA/cacert.pem server.cert
server.cert: OK


In ieder geval bedankt voor de moeite iedereen :*).

[ Voor 42% gewijzigd door Jaap-Jan op 24-04-2004 10:55 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett

Pagina: 1