Bug 17768 - SSL-Synchronisation zwischen UCS und AD
SSL-Synchronisation zwischen UCS und AD
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: AD Connector
UCS 2.3
Other Linux
: P5 critical (vote)
: UCS 2.3-2
Assigned To: Stefan Gohmann
Felix Botner
:
Depends on: 16432
Blocks:
  Show dependency treegraph
 
Reported: 2010-02-26 14:24 CET by Stefan Gohmann
Modified: 2010-05-18 10:00 CEST (History)
0 users

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Stefan Gohmann univentionstaff 2010-02-26 14:24:00 CET
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'}
Comment 1 Stefan Gohmann univentionstaff 2010-02-26 14:27:50 CET
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
Comment 2 Stefan Gohmann univentionstaff 2010-02-26 16:15:00 CET
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.
Comment 3 Stefan Gohmann univentionstaff 2010-03-01 13:50:21 CET
Der einfachste Workaround im Moment scheint der folgende Befehl zu sein:

cat $(ucr get connector/ad/ldap/certificate) >>/etc/univention/ssl/ucsCA/CAcert.pem
Comment 4 Stefan Gohmann univentionstaff 2010-03-01 15:59:59 CET
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.
Comment 5 Stefan Gohmann univentionstaff 2010-03-02 07:06:54 CET
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.
Comment 6 Felix Botner univentionstaff 2010-03-02 17:24:35 CET
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.
Comment 7 Stefan Gohmann univentionstaff 2010-03-02 20:02:56 CET
(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.
Comment 8 Stefan Gohmann univentionstaff 2010-03-03 08:19:13 CET
Meine Tests waren erfolgreich.
Comment 9 Felix Botner univentionstaff 2010-03-03 11:23:23 CET
Connector mit w2008 und w2003 <-> UCS ok (ucs2.3-2 und ucs2.3-1-update).

Scope und SDB Artikel sind freigegeben.
Comment 10 Stefan Gohmann univentionstaff 2010-05-18 10:00:22 CEST
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".