Univention Bugzilla – Bug 17768
SSL-Synchronisation zwischen UCS und AD
Last modified: 2010-05-18 10:00:22 CEST
Mit UCS 2.3-1 scheint es Probleme beim SSL-Verbindungsaufbau zwischen dem AD Connector und dem AD-LDAP zu geben. In der connector-status.log kommt die folgende Fehlermeldung: Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/univention/connector/ad/main.py", line 239, in main connect() File "/usr/lib/python2.4/site-packages/univention/connector/ad/main.py", line 165, in connect baseConfig['%s/ad/listener/dir' % CONFIGBASENAME]) File "/usr/lib/python2.4/site-packages/univention/connector/ad/__init__.py", line 572, in __init__ self.lo_ad=univention.uldap.access(host=ad_ldap_host, port=int(ad_ldap_port), base=ad_ldap_base, binddn=ad_ldap_binddn, bindpw=ad_ldap_bindpw, start_tls=tls_mode, ca_certfile=ad_ldap_certificate, decode_ignorelist=['objectSid', 'objectGUID', 'repsFrom', 'replUpToDateVector', 'ipsecData', 'logonHours', 'userCertificate', 'dNSProperty', 'dnsRecord', 'member']) File "/usr/lib/python2.4/site-packages/univention/uldap.py", line 115, in __init__ self.__smart_open() File "/usr/lib/python2.4/site-packages/univention/uldap.py", line 137, in __smart_open self.lo=ldap.ldapobject.SmartLDAPObject(uri="ldap://"+str(self.host)+":"+str(self.port), start_tls=self.start_tls, tls_cacertfile=self.ca_certfile) File "/usr/lib/python2.4/site-packages/ldap/ldapobject.py", line 895, in __init__ self.start_tls_s() File "/usr/lib/python2.4/site-packages/ldap/ldapobject.py", line 790, in start_tls_s res = SimpleLDAPObject.start_tls_s(self) File "/usr/lib/python2.4/site-packages/ldap/ldapobject.py", line 532, in start_tls_s return self._ldap_call(self._l.start_tls_s) File "/usr/lib/python2.4/site-packages/ldap/ldapobject.py", line 96, in _ldap_call result = func(*args,**kwargs) CONNECT_ERROR: {'info': 'error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed', 'desc': 'Connect error'}
univention-adsearch funktioniert problemlos. Nach dem Downgrade von python-univention funktioniert der AD Connector wieder problemlos: apt-get install python-univention=4.0.3-1.62.200910141527
Das Problem scheint der Aufruf ldap.set_option( ldap.OPT_X_TLS_CACERTFILE, self.ca_certfile ) in der ulapd.py zu sein. Vermutlich wird das nicht gesetzt, da schon eine Verbindung zum lokalen UCS-LDAP-Server besteht. Wenn ich die lokale LDAP-Verbindung zum UCS nicht aufbaue, dann funktioniert es wie gewünscht.
Der einfachste Workaround im Moment scheint der folgende Befehl zu sein: cat $(ucr get connector/ad/ldap/certificate) >>/etc/univention/ssl/ucsCA/CAcert.pem
http://www.mail-archive.com/python-ldap-dev@lists.sourceforge.net/msg00382.html Obwohl wir gegen OpenSSL linken funktioniert die Option OPT_X_TLS_CACERTDIR nicht. Ich würde deshalb vorschlagen, dass wir beim Starten des AD Connector die beiden konfigurierten Root Zertifikate in ein PEM-File speichern und das verwenden. Das hat den Vorteil, dass wir im Moment kein UMC-Modul oder sonstiges anpassen müssen und wir beim Update nur den AD Connector aktualisieren müssen.
fixed Ich habe das Paket auch im Scope ucs2.3-1-update gebaut. Sobald die QA durch ist (2.3-2 und 2.3-1-update), bitte den Scope veröffentlichen: announce_ucs_scope -m -r 2.3-0 -s ucs2.3-1-update Zusätzlich gibt es einen SDB Artikel, den bitte auch nach der Veröffentlichung freischalten.
univention-adsearch macht noch kein TLS. adsearch verwendet ja nicht uldap, sondern geht über ldapobject.SmartLDAPObject. Vermutlich wird das LDAP-Bind hier noch über das ldapobject.SmartLDAPObject gemacht und nicht über den extra Aufruf von lo.simple_bind_s(login_dn, login_pw). Das die Versionssnummer univention-ad-connector in ucs2.3-2 (4.1.10-1.143.201003020649) kleiner ist als in ucs2.3-1-update (4.1.10-1.144.201003020657) ist vermutlich nicht tragisch und der Reihenfolge der "build" Aufrufe für die beiden Scopes geschuldet. Ansonsten funktioniert es mit 2008. * Connector eingerichtet und gestartet, keine Connector Traceback * mit wireshark sind auch keine Passwörter etc. zu sehen * Synchronisierung klappt ebenfalls (UCS <-> AD) 2003 Teste ich dann noch.
(In reply to comment #6) > univention-adsearch macht noch kein TLS. adsearch verwendet ja nicht uldap, > sondern geht über ldapobject.SmartLDAPObject. > > Vermutlich wird das LDAP-Bind hier noch über das ldapobject.SmartLDAPObject > gemacht und nicht über den extra Aufruf von lo.simple_bind_s(login_dn, > login_pw). In der Tat. Da ich den Code nicht angefasst habe, bedeutet das allerdings, dass das in UCS 2.3-1 auch schon so war? Ist jetzt angepasst, neue Versionen bauen. > Das die Versionssnummer univention-ad-connector in ucs2.3-2 > (4.1.10-1.143.201003020649) kleiner ist als in ucs2.3-1-update > (4.1.10-1.144.201003020657) ist vermutlich nicht tragisch und der Reihenfolge > der "build" Aufrufe für die beiden Scopes geschuldet. Das ist egal, da die Versionen komplett identisch sind. Es sind noch für 2.3-2 Dinge geplant, von daher wird die Version dann noch erhöht, wenn nicht, dann funktioniert es trotzdem. > Ansonsten funktioniert es mit 2008. > > * Connector eingerichtet und gestartet, keine Connector Traceback > * mit wireshark sind auch keine Passwörter etc. zu sehen > * Synchronisierung klappt ebenfalls (UCS <-> AD) > > 2003 Teste ich dann noch.
Meine Tests waren erfolgreich.
Connector mit w2008 und w2003 <-> UCS ok (ucs2.3-2 und ucs2.3-1-update). Scope und SDB Artikel sind freigegeben.
UCS 2.3-2 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden: "Clone This Bug".