Bazı sistemler ldap'a ldaps aracılığıyla bağlanamaz, ancak diğerleri joker karakter sertifikası mı?


15

Novel eDirectory 8.8 sunucuma ldaps bağlantıları yapmaya çalışırken, bazen TLS_REQCERT neveristemci sunucuları ldap.conf dosyasına koymak zorunda kalıyorum. Açıkçası, bu kötü bir fikir.

Çalıştırdığım komut aslında çalışan kimlik bilgileriyle böyle bir şey ...

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

Ubuntu 13.10'da iyi çalışıyor.

SLES'te iyi çalışıyor.

CentOS 6.5'te şunu döndürür:

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

Şimdi, ithal ettiğim sertifika DigiCert'ten satın alınan bir joker sertifika. İş arkadaşım bazı sistemlerin joker karakterlerle ilgili sorunları olduğunu belirten raporlar buldu.

Peki, joker karakter suçlanacak mı? Öyleyse, nasıl düzeltebilirim?

Joker karakter sertifikası değilse, o zaman nedir?

Andrew Schulman'ın önerisinden sonra -d1ldapsearch komutuma ekledim . İşte sonuçta:

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)

Söylediklerinden, CentOS DigiCert'e güvenmiyor mu? Yoksa CentOS'un güvenilir yayıncıların bir listesi yok mu?


1
"LDAP sunucusuyla bağlantı kurulamıyor" sesi, sunucuya o istemci makineden erişilemediğinden daha fazla geliyor. İlk önce ona bağlanabileceğinizi kontrol ettiniz mi? Örneğin telnet ldapserver ldapsveya openssl s_client -connect ldapserver:636.
Richard E. Silverman

Evet, sunucuya bağlanabileceğini onayladım. Sonuçta, hiç bağlanamazsa asla işe yaramazdı.
David R.

Üç farklı müşteri ana bilgisayarından bahsettiniz. Çalışmayan bir ağ bağlantısı nedeniyle bağlantı kuramıyor olabilirken diğerleri olabilir.
Richard E. Silverman

Yazımın tüm ana bilgisayarlarda ldap.conf dosyasını düzenlediğimi oldukça açık olduğunu düşündüm. Satırı dosyaya eklediğimde olduğu gibi işe yaradı, ancak satır olmadan olmadı. Bu nedenle, bir bağlantı sorunu değil.
David R.

Başlangıçta yazınızı okuduğumda bu benim için açık değildi, ancak şimdi ne demek istediğinizi görüyorum. Her neyse, eklediğiniz TLS hata ayıklama bilgileri sorunu gösteriyor; Takip etmek için bir cevap ekledim.
Richard E. Silverman

Yanıtlar:


9

ldapsearch, güvenilir CA sertifikaları deposu için / etc / openldap / cacerts içinde arama yapıyor ve görünüşe göre kurulmamış ve bu nedenle sertifikası reddediyor, çünkü bunun için bir güven zinciri oluşturamıyor. Ldapsearch OpenSSL kullanıyorsa, örneğin Red Hat "authconfig" programı tarafından üretilen "hashdir" biçiminde bir koleksiyona veya düz bir güvenilir sertifikalar listesine sahip tek bir dosyaya ihtiyaç duyar. Burada "moznss" referansı, bu ldapsearch'ün Mozilla NSS'ye göre oluşturulduğunu göstermektedir, bu durumda cert db'yi yapmak için "certutil" kullanmanız gerekir (veya daha iyisi, varsa sistem NSS sertifika deposuna yönlendirin) .

Çalıştığı sistemlerde, ldapsearch çalışan bir sertifika deposuna sahip olmalıdır, çünkü bu OpenLDAP paketleri bunun yerine OpenSSL'ye göre oluşturulmuştur (veya orada çalışan bir NSS tarzı mağaza vardır).


2
Ah. /etc/openldap/certssertifika deposunun bulunduğu yerdir. Cacerts değil. /Etc/openldap/ldap.conf ben değiştirdi TLS_CACERTDIR /etc/openldap/cacertsiçin TLS_CACERTDIR /etc/openldap/certsve benim ldapsearch komutu çalışmaya başladı. Teşekkürler!
David R.

Ubuntu 16.04 üzerinde yüklü ldapsearch var ve / etc / openldap dizini yok.
vcardillo

13

ldapsearch, TLS sertifikasını doğrulayamazsa "LDAP sunucusuna erişilemiyor" diyecektir. -d1Ldapsearch komutunuza ekleyin ve TLS bağlantısının başarısız olup olmadığını ve nedenini öğrenmek için "TLS:" ile başlayan çıkış satırlarını kontrol edin.


Öneriniz doğrultusunda sorumu düzenledim. Teşekkürler!
David R.

8

Çözüm kurulumunuza bağlıdır:

  • Eğer varsa bir sigara geçerli sertifikası kullanarak , bunu yapılandırarak kabul zorlayabilir /etc/openldap/ldap.confile

    TLS_REQCERT allow
    

    veya

    TLS_REQCERT never
    
  • Eğer varsa , geçerli bir sertifika kullanılarak güvenilen CA sertifikaları mağaza (muhtemelen OpenSSL kurulumu bağlı olarak) nerede muhtemelen ldap instalation bilmiyorum. O zaman bunu konum ve kuvvet çek yapılandırılması ayarlamak için deneyebilirsiniz /etc/openldap/ldap.confile

    TLS_CACERT /etc/openldap/cacert
    TLS_REQCERT demand
    

    /etc/openldap/cacertbu olabilir veya herhangi bir yolda bulunabilir. CA'nızın sertifika zincirini içermelidir. Düz güvenilir sertifika listesi içeren tek bir dosya olabilir.

Not yolları ldap sağlayıcısına bağlıdır. Öyle /etc/ldapya /etc/openldapda böyle olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.