Differences

This shows you the differences between two versions of the page.

Link to this comparison view

saisp:labs:02:contents:07 [2014/03/01 22:21]
razvan.deaconescu created
saisp:labs:02:contents:07 [2014/03/03 00:19] (current)
razvan.deaconescu [07. Configurare suport SSL/TLS]
Line 1: Line 1:
-==== 07. Configurare suport SSL/TLS ====+==== 07. [15p] Configurare suport SSL/TLS ====
  
-TODO+Pentru a securiza comunicația cu serverul de LDAP avem două opțiuni 
 +  - configurarea suportului SSL, adică LDAPS 
 +  - configurarea suportului de TLS 
 + 
 +Pentru configurarea suportului de SSL, edităm în fișierul ''/​etc/​default/​slapd''​ linia care conține directiva ''​SLAPD_SERVICES''​. Linia trebuie să ajungă la forma:<​code>​ 
 +SLAPD_SERVICES="​ldap:///​ ldapi:/// ldaps:///"​ 
 +</​code>​ 
 + 
 +Apoi repornim serverul de LDAP<​code bash> 
 +root@ldap-client:​~#​ service slapd restart 
 +[ ok ] Stopping OpenLDAP: slapd. 
 +[ ok ] Starting OpenLDAP: slapd. 
 +</​code>​ și urmărim dacă acum ascultă conexiuni LDAPS (pe portul ''​636''​):<​code bash> 
 +root@ldap-client:​~#​ netstat -tlpn | grep slapd 
 +tcp        0      0 0.0.0.0:​636 ​            ​0.0.0.0:​* ​              ​LISTEN ​     3620/​slapd ​      
 +tcp        0      0 0.0.0.0:​389 ​            ​0.0.0.0:​* ​              ​LISTEN ​     3620/​slapd ​      
 +tcp6       ​0 ​     0 :::​636 ​                 :::*                    LISTEN ​     3620/​slapd ​      
 +tcp6       ​0 ​     0 :::​389 ​                 :::*                    LISTEN ​     3620/slapd  
 +</​code>​ 
 + 
 +Cu toate acestea, dacă încercăm să ne conectăm la server folosind LDAPS obținem eroare:<​code bash> 
 +root@ldap-client:​~#​ ldapsearch -x -LLL -H ldaps://​localhost -b "​dc=tasks,​dc=cs,​dc=pub,​dc=ro"​ dn 
 +ldap_sasl_bind(SIMPLE):​ Can't contact LDAP server (-1) 
 +</​code>​ 
 + 
 +Acest lucru este datorat absenței certificatelor SSL. Ca să rezolvăm acest lucru, generăm un certificat SSL self-signed,​ urmărind indicațiile de [[https://​wiki.debian.org/​Self-Signed_Certificate#​STEP_2|aici]]. Vom rula comanda:<​code bash> 
 +root@ldap-client:​~#​ openssl req -new -x509 -days 365 -nodes -out /​etc/​ssl/​certs/​slapd-cert.pem -keyout /​etc/​ssl/​private/​slapd-key.pem 
 +[...] 
 +</​code>​ 
 + 
 +Introduceți în cadrul comenzii de mai sus opțiunile utile. Acum cheia privată este generată în fișierul ''/​etc/​ssl/​private/​slapd-key.pem'',​ iar cheia publică este generată în fișierul ''/​etc/​ssl/​certs/​slapd-cert.pem''​. 
 + 
 +Acum trebuie să configurăm serverul de LDAP pentru a folosi certificatele. Vom urmări indicațiile de [[https://​wiki.debian.org/​LDAP/​OpenLDAPSetup#​Configuring_LDAPS|aici]]. Vom crea un fișier LDIF și în cadrul acestuia vom preciza directivele ''​olcTLSCertificateKeyFile''​ respectiv ''​olcTLSCertificateFile'':<​file note slapd-config-tls.ldif>​ 
 +dn: cn=config 
 +changetype: modify 
 +add: olcTLSCertificateKeyFile 
 +olcTLSCertificateKeyFile:​ /​etc/​ssl/​private/​slapd-key.pem 
 +
 +add: olcTLSCertificateFile 
 +olcTLSCertificateFile:​ /​etc/​ssl/​certs/​slapd-cert.pem 
 +</​file>​ 
 + 
 +Încărcăm apoi acest fișier în baza de date de configurare internă a serverului LDAP:<​code bash> 
 +root@ldap-client:​~#​ ldapmodify -Y EXTERNAL -H ldapi:/// -f slapd-config-tls.ldif  
 +SASL/​EXTERNAL authentication started 
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth 
 +SASL SSF: 0 
 +modifying entry "​cn=config"​ 
 +</​code>​ și verificăm informațiile prezente acum în baza de date<​code bash> 
 +root@ldap-client:​~#​ ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -s base -b "​cn=config"​ 
 +SASL/​EXTERNAL authentication started 
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth 
 +SASL SSF: 0 
 +dn: cn=config 
 +objectClass:​ olcGlobal 
 +cn: config 
 +olcArgsFile:​ /​var/​run/​slapd/​slapd.args 
 +olcLogLevel:​ none 
 +olcPidFile: /​var/​run/​slapd/​slapd.pid 
 +olcToolThreads:​ 1 
 +olcTLSCertificateKeyFile:​ /​etc/​ssl/​private/​slapd-key.pem 
 +olcTLSCertificateFile:​ /​etc/​ssl/​certs/​slapd-cert.pem 
 +</​code>​ 
 + 
 +În baza de date internă de configurare sunt prezente acum cheia privată și certificatul SSL utile pentru funcționarea LDAPS și LDAP+TLS. Va trebui să acordăm serverului LDAP acces la cheia privată folosind comanda<​code bash> 
 +root@ldap-client:​~#​ adduser openldap ssl-cert 
 +</​code>​ 
 +și apoi să repornim serviciul:<​code bash> 
 +root@ldap-client:​~#​ service slapd restart 
 +[ ok ] Stopping OpenLDAP: slapd. 
 +[ ok ] Starting OpenLDAP: slapd. 
 +</​code>​ 
 + 
 +După aceasta vom putea folosi URI de tipul LDAPS pentru a interoga serverul de LDAP local:<​code bash> 
 +root@ldap-client:​~#​ ldapsearch -x -LLL -H ldaps://​localhost -b dc=tasks,​dc=cs,​dc=pub,​dc=ro dn 
 +dn: dc=tasks,​dc=cs,​dc=pub,​dc=ro 
 + 
 +dn: cn=admin,​dc=tasks,​dc=cs,​dc=pub,​dc=ro 
 +</​code>​ 
 + 
 +Pe această configurație putem verifica și conexiunea folosind TLS. URI-ul de conectare la server este același ca în cazul nesecurizat,​ dar folosim opțiunea ''​-Z''​ pentru a activa suportul TLS:<​code bash> 
 +root@ldap-client:​~#​ ldapsearch -x -Z -LLL -H ldap://​localhost -b dc=tasks,​dc=cs,​dc=pub,​dc=ro dn 
 +dn: dc=tasks,​dc=cs,​dc=pub,​dc=ro 
 + 
 +dn: cn=admin,​dc=tasks,​dc=cs,​dc=pub,​dc=ro 
 +</​code>​ 
 + 
 +Acum serverul funcționează corespunzător cu suport SSL (LDAPS) și TLS.
saisp/labs/02/contents/07.1393705306.txt.gz · Last modified: 2014/03/01 22:21 by razvan.deaconescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0