openLDAP ssl/tls Centos 6.3

Kateřina Bubeníčková katerina.bub na gmail.com
Pondělí Březen 10 11:55:56 CET 2014


DD,
snažím se rozběhnout $subj, vyzkoušela jsem už asi 6 návodů, stále to
nejede a mám nějaké nejasnosti...

# ldapsearch -x -ZZ -d3 -b 'dc=mydomain,dc=cz' -H ldaps://localhost
...
tls_read: want=5, got=0

TLS: error: tlsm_PR_Recv returned 0 - error 21:Is a directory
TLS: error: connect - force handshake failure: errno 21 - moznss error -5938
TLS: can't connect: TLS error -5938:Encountered end of file.
ldap_err2string
ldap_start_tls: Can't contact LDAP server (-1)
    additional info: TLS error -5938:Encountered end of file
------

Z toho jsem pochopila, že potřebuju certifikáty moznss.

1. postup
podle
http://linuxserverathome.com/articles/installing-and-configuring-openldap-2423-centos-63

Protože už se snažím nějakou dobu, vygenerovala jsem db znovu pomocí

#/usr/libexec/openldap/create-certdb.sh

[root na test-LDAP certs]# certutil -d ./ -L

Certificate Nickname                                         Trust
Attributes

SSL,S/MIME,JAR/XPI

OpenLDAP Server                                              CTu,u,u
----------------------------

/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif
olcTLSCACertificatePath: /etc/pki/tls/certs
olcTLSCertificateKeyFile: "OpenLDAP Server"
olcTLSCertificateFile: /etc/openldap/certs/password
--------
nebo
[root na test-LDAP certs.bk]# certutil -d /etc/openldap/certs.bk/ -L

Certificate Nickname                                         Trust
Attributes

SSL,S/MIME,JAR/XPI
CA certificate                                               CTu,u,u
OpenLDAP Server                                              u,u,u
-------
a ještě mám jednu další variantu, a nic z toho
nefunguje. Ale nevím, co znamená CTU,u,u, a jestli ta databáze obsahuje
všechno, co má.

Zkusila bych třeba http://www.bradchen.com/blog/2012/08/openldap-tls-issue,
ale zase u prvního příkazu nevím, co to mám napsat jako  "My Issuer",
jestli je to někde důležité.



2.postup:
Podle
http://unixadminschool.com/blog/2013/04/rhel-6-3-ldap-series-part-4-troubleshooting/#
bych měla vygenerovat hash z certifikátů, pochopila jsem, že certifikát pro
tento účel by měl být bez passphrase (s parametrem -nodes)

Ale po mnoha předchozích pokusech jsem se dostala do problému, že vlastně
nevím, kde mám kořenový certifikát, zda jich náhodou nemám víc, který klíč
patří ke kterému certifikátu, zda to mám generovat v adresáři  /etc/pki/CA
nebo /etc/pki/tls.

Server je na virtuálu klonovaný ze serveru, na kterém běží jen openLDAP,
takže ho můžu klidně smazat a naklonovat znovu nebo nainstalovat od nuly....

Návodů na vygenerování certifikátu je spousta, jenže vždycky tam něco
chybí, nebo nerozumím nějakému malému detailu.

U tohoto postupu tedy nevím: co se stane s kořenovým certifikátem při
klonování - je to problém?
Jak poznám kořenový certifikát, že je to kořenový certifikát -
nejpravděpodobněji vypadá
/etc/pki/tls/certs/ca-bundle.crt
nebo /etc/pki/tls/certs/ca-bundle.trust.crt

jenže při generování certifikátu pro openldap jsem myslím ca nepsala


/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif
olcTLSCACertificateFile: /etc/pki/tls/certs/ca-bundle.crt
olcTLSCACertificatePath: /etc/pki/tls/certs.bk2
olcTLSCertificateFile: /etc/pki/tls/certs.bk2/ldap1_privkey.pem
olcTLSCertificateKeyFile: /etc/pki/tls/certs.bk2/ldap1_privkey.key.pem
--------
ls -l /etc/pki/tls/certs.bk2

Výše uvedené taky nefunguje.

Klíče jsem generovala podle
http://easylinuxtutorials.blogspot.cz/2013/11/installing-configuring-openldap-server.html
,
tam neuvádějí, že by bylo potřeba parametry
olcTLSCACertificateFile:
olcTLSCACertificatePath:
---tak jsem tyto parametry zaremovala

ale zato jsem podle tohoto návodu přidala do /etc/openldap/ldap.conf
# enable on-the-fly configuration (cn=config)
database config
access to *
        by
dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
        by * none

# enable server status monitoring (cn=monitor)
database monitor
access to *
        by
dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
        by dn.exact="cn=Manager,dc=example,dc=com" read //upraveno dle
potřeby
        by * none
---------
je to potřeba?


Který postup je správný? (1. nebo 2.)

výsledek je zatím  pořád stejný:
openssl s_client -connect localhost:636 -showcerts
CONNECTED(00000003)
139897046730568:error:140790E5:SSL routines:SSL23_WRITE:ssl handshake
failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 263 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
--------------------



Předem díky za každou radu,

Kateřina


Další informace o konferenci Linux