StartTLS with errors on 2.4.17
Ralf Haferkamp
rhafer at suse.de
Mon Sep 14 16:53:05 CEST 2009
Am Monday 14 September 2009 14:59:25 schrieben Sie:
> Ralf Haferkamp wrote:
> > Am Monday 14 September 2009 12:21:36 schrieben Sie:
> >> Hallo Ralf,
> >>
> >> Ralf Haferkamp wrote:
> >>> Are you able to reproduce it using
> >>> ldapsearch (that's what I used as I don't have your test code):
> >>
> >> Nein, leider nicht. Bzw. Dieter Klünter hat das getestet.
> >>
> >> Es kann auch durchaus an python-ldap liegen. Aber warum funktioniert es
> >> dann mit 2.4.18 libldap? Und wie sieht es mit den Backport-Packages
> >> von OpenSSL aus?
> >
> > Welche Backport-Packages von OpenSSL meinst du?
> >
> >> Vielleicht irgendwelche subtilen Abhängigkeiten?
> >>
> >>> LDAPNOINIT=1 \
> >>> LDAPTLS_CACERT=/etc/ssl/certs/Wells_Fargo_Root_CA.pem \
> >>> ldapsearch -x -b "" -H ldap://dkluenter.dyndns.org -ZZ -d -1
> >>
> >> Ich habe mal das Test-Skript und CA-Cert angehängt.
> >
> > Ok, Ich habe das gerade mal ausprobiert. Bei mir funktioniert das wie
> > erwartet. Lediglich, wenn ich in TLS_REQCERT=allow
> > /etc/openldap/ldap.conf setze wird der Fehler ignoriert.
>
> Hmm, das scheint tatsächlich der Fehler zu sein. Danke.
Phew, da bin ich ein wenig erleichert ;)
> Mein 2.4.18-Build schaut in einer anderen ldap.conf nach, da anderer
> prefix. Ich dachte eigentlich, diese Code-Zeile hätte Vorrang vor
> TLS_REQCERT allow in der ldap.conf.
>
> l.set_option(ldap.OPT_X_TLS,ldap.OPT_X_TLS_DEMAND)
>
> Noch nicht mal global gesetzt hilft:
>
> ldap.set_option(ldap.OPT_X_TLS,ldap.OPT_X_TLS_DEMAND)
Ich glaube du setzt die falsche Option. Korrekt wäre:
LDAP_OPT_X_TLS_REQUIRE_CERT
bzw.
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT,ldap.OPT_X_TLS_DEMAND)
LDAP_OPT_X_TLS macht was ganz anderes. Damit kann man soweit ich das sehe tls
aktivieren ohne explizit start_tls() aufzurufen.
Wenn ich jetzt in dem Testskript, vor dem ldap.initialize Aufruf das hier
setze:
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT,ldap.OPT_X_TLS_DEMAND)
Dann schlägt der start_tls_s-Aufruf wie erwartet fehl.
Das funktioniert aber nur als globale Option. AFAIK ist das so, weil die
Bibliothek den TLS context nur einmal global initialisiert, und nicht pro
Verbindung. In C kann man den TLS context über LDAP_OPT_X_TLS_NEWCTX neu
erzeugen lassen, kann sein, dass es damit auch nach dem ldap_initialize
funktionieren würde.
> Es hilft tatsächlich nur im Skript (oder wie von Dir gesagt auf
> Shell-Ebene):
>
> os.environ['LDAPNOINIT']='1'
>
> Spricht etwas dagegen in der ldap.conf Deiner Packages den Default-Wert so
> zu setzen?
>
> TLS_REQCERT hard
Der Testaufwand. Wahrscheinlich machen danach einige YaST Module Probleme.
Aber prinzipiell wäre es am besten die Option TLS_REQCERT ganz rauszulassen
(der default ist ja "hard").
--
Gruß,
Ralf
More information about the python-ldap
mailing list