Unele sisteme nu se pot conecta la ldap prin ldaps, dar altele pot, este vorba de wildcard cert? (Administrarea sistemului, Certificat Ssl, Ldap, Edirectory)

David R. a intrebat.
a intrebat.

Atunci când încerc să fac conexiuni ldaps la serverul meu Novel eDirectory 8.8, uneori trebuie să pun TLS_REQCERT never în fișierul ldap.conf al serverelor client. Evident, aceasta este o idee proastă.

Comanda pe care o execut este ceva de genul acesta, cu credențiale care chiar funcționează…

ldapsearch -x -H ldaps://ldapserver -b 'ou=active,ou=people,dc=example,dc=org' -D 'cn=admin,dc=example,dc=org' -W "cn=username"

Pe Ubuntu 13.10, funcționează bine.

Pe SLES funcționează bine.

Pe CentOS 6.5 se întoarce:

ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

Acum, certificatul pe care l-am importat este un certificat wildcard cumpărat de la DigiCert. Colegul meu a găsit niște rapoarte care indică faptul că unele sisteme au probleme cu wildcard-urile.

Așadar, este de vină certificatul wildcard? Dacă da, cum îl pot repara?

Dacă nu este vorba de certificatul wildcard, atunci de ce este vorba?

Urmând sugestia lui Andrew Schulman, am adăugat -d1 la comanda mea ldapsearch. Iată ce am obținut:

ldap_url_parse_ext(ldaps://ldap.example.org)
ldap_create
ldap_url_parse_ext(ldaps://ldap.example.org:636/??base)
Enter LDAP Password: 
ldap_sasl_bind
ldap_send_initial_request
ldap_new_connection 1 1 0
ldap_int_open_connection
ldap_connect_to_host: TCP ldap.example.org:636
ldap_new_socket: 3
ldap_prepare_socket: 3
ldap_connect_to_host: Trying 10.225.0.24:636
ldap_pvt_connect: fd: 3 tm: -1 async: 0
TLS: certdb config: configDir='/etc/openldap' tokenDescription='ldap(0)' certPrefix='cacerts' keyPrefix='cacerts' flags=readOnly
TLS: cannot open certdb '/etc/openldap', error -8018:Unknown PKCS #11 error.
TLS: could not get info about the CA certificate directory /etc/openldap/cacerts - error -5950:File not found.
TLS: certificate [CN=DigiCert High Assurance EV Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US] is not valid - error -8172:Peer's certificate issuer has been marked as not trusted by the user..
TLS: error: connect - force handshake failure: errno 2 - moznss error -8172
TLS: can't connect: TLS error -8172:Peer's certificate issuer has been marked as not trusted by the user..
ldap_err2string
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

Din ceea ce spune, CentOS nu are încredere în DigiCert? Sau CentOS nu are o listă de emitenți de încredere?

Comentarii

  • „Can’t contact LDAP server” sună mai degrabă ca și cum serverul nu este pur și simplu accesibil de pe acel computer client. Ați verificat mai întâi dacă vă puteți conecta la el? De ex. telnet ldapserver ldaps sau openssl s_client -connect ldapserver:636. –  > Por Richard E. Silverman.
  • Da, am confirmat că se poate conecta la server. La urma urmei, nu ar funcționa deloc dacă nu s-ar putea conecta deloc. –  > Por David R..
  • Ați menționat trei gazde client diferite. Este posibil ca cea care nu funcționează să nu se fi putut conecta din cauza unei probleme de rețea, în timp ce celelalte au putut. –  > Por Richard E. Silverman.
  • Am crezut că mesajul meu a fost destul de clar că editam fișierul ldap.conf pe toate gazdele. Adică atunci când am adăugat linia la fișier, a funcționat, dar fără linie nu a funcționat. Așadar, nu este o problemă de conexiune. –  > Por David R..
  • Acest lucru nu mi-a fost clar când am citit inițial mesajul dvs., deși acum înțeleg ce vreți să spuneți. Oricum, informațiile de depanare TLS pe care le-ați adăugat arată problema; am adăugat un răspuns pentru a urmări. –  > Por Richard E. Silverman.
3 răspunsuri
Richard E. Silverman

ldapsearch caută în /etc/openldap/cacerts pentru stocul de certificate CA de încredere și se pare că acesta nu este configurat și, prin urmare, respinge certificatul deoarece nu poate construi un lanț de încredere pentru acesta. Dacă ldapsearch ar utiliza OpenSSL, ar avea nevoie de o colecție în format „hashdir”, așa cum este produsă, de exemplu, de programul „authconfig” de la Red Hat, sau de un singur fișier cu o listă completă de certificate de încredere. Referirea de aici la „moznss” sugerează că acest ldapsearch este construit pentru Mozilla NSS, caz în care trebuie să folosiți „certutil” pentru a crea baza de date de certificate (sau, mai bine, să o direcționați către magazinul de certificate NSS al sistemului, dacă există unul).

Pe sistemele în care funcționează ldapsearch trebuie să aibă un magazin de certificate funcțional, poate pentru că acele pachete OpenLDAP sunt construite în schimb în funcție de OpenSSL (sau poate că există un magazin funcțional de tip NSS disponibil acolo).

Comentarii

  • Ah. /etc/openldap/certs este locul unde se află depozitul de certificate. Nu cacerts. În /etc/openldap/ldap.conf am schimbat TLS_CACERTDIR /etc/openldap/cacerts în TLS_CACERTDIR /etc/openldap/certs și comanda mea ldapsearch a început să funcționeze. Vă mulțumim! –  > Por David R..
  • Am instalat ldapsearch pe Ubuntu 16.04 și nu există un director /etc/openldap. –  > Por vcardillo.
Andrew Schulman

ldapsearch va spune „Can’t contact LDAP server” dacă nu poate verifica certificatul TLS. Adăugați -d1 la comanda ldapsearch și verificați liniile de ieșire care încep cu „TLS:” pentru a obține mai multe informații despre eșecul conexiunii TLS și motivul acestuia.

Comentarii

  • Mi-am editat întrebarea ca răspuns la sugestia dumneavoastră. Vă mulțumim! –  > Por David R..
Juan Garcia

Soluția depinde de instalarea dvs:

  • Dacă sunteți utilizați un certificat nevalabil, puteți forța acceptarea acestuia configurând /etc/openldap/ldap.conf cu

    TLS_REQCERT allow
    

    sau

    TLS_REQCERT never
    
  • Dacă sunteți utilizați un cert valid probabil că instalația ldap nu știe unde se află stocul de certificate CA de încredere (probabil în funcție de instalarea OpenSSL). În acest caz, puteți încerca să stabiliți locația și să forțați verificarea configurării /etc/openldap/ldap.conf cu

    TLS_CACERT /etc/openldap/cacert
    TLS_REQCERT demand
    

    /etc/openldap/cacert poate fi aceasta sau poate fi localizată în orice cale. Acesta trebuie să conțină lanțul de certificate al CA-ului dumneavoastră. Poate fi un singur fișier cu o listă plată de certificate de încredere.

Rețineți căile de acces depind de furnizorul ldap. Ar putea fi /etc/ldap sau /etc/openldap sau așa.