rhel:ldap-ssl
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| rhel:ldap-ssl [2017/05/11 07:08] – otto | rhel:ldap-ssl [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ===== php, python und ldap-clients mit tls zum ldapserver ===== | ||
| - | |||
| - | ==== neu openldap-2.4 ==== | ||
| - | |||
| - | es gibt einige änderungen bei den tools, u.a. die zert-verwaltung, | ||
| - | |||
| - | < | ||
| - | |||
| - | === hinzufügen einer ca zu den vertrauenswürdigen ca's === | ||
| - | |||
| - | wie gehabt gibt es eine / | ||
| - | |||
| - | TLS_CACERTDIR / | ||
| - | |||
| - | dort liegen einige db's, den Inhalt des keystores kann man sich anzeigen lassen: | ||
| - | |||
| - | < | ||
| - | certutil -d / | ||
| - | |||
| - | Certificate Nickname | ||
| - | | ||
| - | |||
| - | </ | ||
| - | |||
| - | hinzufügen einer neuen CA4 zu den CA's: | ||
| - | |||
| - | < | ||
| - | certutil -A -d / | ||
| - | </ | ||
| - | |||
| - | gucken ob das neue ca installiert wurde: | ||
| - | |||
| - | < | ||
| - | certutil -d / | ||
| - | |||
| - | Certificate Nickname | ||
| - | | ||
| - | |||
| - | CA4 CT,, | ||
| - | </ | ||
| - | |||
| - | jetzt klappt die Verbindung mit ldapsearch und TLS: | ||
| - | |||
| - | ldapsearch -D " | ||
| - | |||
| - | |||
| - | ==== konfiguration redhat linux ==== | ||
| - | |||
| - | ohne Zertprüfung: | ||
| - | |||
| - | folgende option zum configfile / | ||
| - | |||
| - | < | ||
| - | |||
| - | debug probleme bei php: | ||
| - | |||
| - | php-option für ldap, die ich vor das erste ldap-connect eingefügt habe: | ||
| - | |||
| - | < | ||
| - | |||
| - | in der logdatei vom webserver findet sich dann folgendes (wenn TLS_REQCERT noch nicht auf ' | ||
| - | |||
| - | < | ||
| - | TLS trace: SSL_connect: | ||
| - | TLS trace: SSL_connect: | ||
| - | TLS trace: SSL_connect: | ||
| - | TLS certificate verification: | ||
| - | subject: / | ||
| - | Zentrum/ | ||
| - | issuer: / | ||
| - | Schmalkalden/ | ||
| - | schmalkalden.de | ||
| - | TLS certificate verification: | ||
| - | certificate | ||
| - | </ | ||
| - | |||
| - | |||
| - | Schalter Z für TLS! | ||
| - | |||
| - | ==== Installation Wurzelzertifikat ==== | ||
| - | |||
| - | Prüfe die folgenden Einstellungen in / | ||
| - | < | ||
| - | # Legt das Verzeichnis fest, indenen nach CA Zertifikaten gesucht wird | ||
| - | TLS_CACERTDIR / | ||
| - | # Legt fest, das ohne ein Zertifikat, oder bei falschem Zertifkat die Verbindung abgebrochen wird | ||
| - | TLS_REQCERT | ||
| - | |||
| - | Das iuk2ca.crt-Zertifikat muss nach / | ||
| - | kopiert werden. | ||
| - | Mit | ||
| - | |||
| - | <note warning> | ||
| - | |||
| - | < | ||
| - | openssl x509 -subject_hash -noout -in iukca2.crt</ | ||
| - | |||
| - | wenn -subject_hash nicht unterstützt wird dann mit | ||
| - | |||
| - | < | ||
| - | | ||
| - | |||
| - | wird der Subject-Hash angezeigt, z.B. 3e4202dc, mit | ||
| - | |||
| - | < | ||
| - | ln -s iukca2.crt 3e4202dc.0</ | ||
| - | |||
| - | wird ein entsprechender Symlink angelegt. | ||
| - | |||
| - | ACHTUNG: punkt-null nicht vergessen, der symlink lautet also < | ||
| - | |||
| - | Nun kann man mit | ||
| - | |||
| - | < | ||
| - | openssl s_client -connect ldap.fh-schmalkalden.de: | ||
| - | |||
| - | prüfen, ob eine SSL-Verbindung hergestellt werden kann. | ||
| - | Dann kann mit | ||
| - | |||
| - | < | ||
| - | | ||
| - | |||
| - | eine Abfrage erfolgen (natuerlich eine sinnvolle uid einsetzen). | ||
| - | |||
| - | erfolgeich, nachdem ich das " | ||
| - | 15:07, 25. Okt 2007 (CEST) | ||
| - | |||
| - | aber python: | ||
| - | |||
| - | < | ||
| - | | ||
| - | |||
| - | d.h. wir müssen mit dem namen connecten der im zert drinsteht, also in diesem fall mit ldap1.fh-schmalkalden.de | ||
| - | > | ||
| - | |||
| - | < | ||
| - | >>> | ||
| - | >>> | ||
| - | | ||
| - | |||
| - | Bingo!! | ||
| - | |||
| - | ==== quellcode php ==== | ||
| - | |||
| - | Bei php muß der apache neu gestartet werden. Die Paramater in / | ||
| - | |||
| - | |||
| - | <code php> | ||
| - | <?php | ||
| - | # zur fehlersuche: | ||
| - | # ldap_set_option(NULL, | ||
| - | |||
| - | $ds=ldap_connect($ldaphost); | ||
| - | # da ist so im ldap-connect, | ||
| - | # host nicht erreichbar ist, deshalb noch ein anonymer bind hinterher: | ||
| - | $rr=ldap_bind($ds); | ||
| - | # echo ldap_error($ds); | ||
| - | |||
| - | # nur wenn bind oben erfolgreich (server ist erreichbar): | ||
| - | if ($rr) { | ||
| - | ## tls einschalten: | ||
| - | if (!ldap_set_option($ds, | ||
| - | | ||
| - | supported.", | ||
| - | } | ||
| - | if (!ldap_start_tls($ds)) { | ||
| - | error_log (" | ||
| - | } | ||
| - | #echo ldap_error($ds); | ||
| - | # mache irgendwas ...... | ||
| - | # programmcode .... | ||
| - | # bool ldap_unbind ( resource link_identifier ) | ||
| - | if (!ldap_unbind($ds)) { | ||
| - | echo " | ||
| - | } | ||
| - | |||
| - | } | ||
| - | else { | ||
| - | |||
| - | echo " | ||
| - | } | ||
| - | ?> | ||
| - | </ | ||
| - | |||
| - | ==== LDAP-Clients unter Ubuntu 16.04.2 LTS ==== | ||
| - | |||
| - | Hier ist alles ein bißchen anders, sicher ähnlich auch bei entsprechenden Debian-Versionen. Ich beschreibe den Fall des verschlüsselten ldapsearch zum SunDirectoryServer 6 auf der zefi. Das Paket ldap-utils und seine Voraussetzungen sind zwar auch Ver. 2.4, benötigen aber keine Certutil-Datenbanken. Hier sind die relevanten LDAP-Pakete und die Abhängigkeiten: | ||
| - | |||
| - | < | ||
| - | $ dpkg -l | grep ldap | ||
| - | ii ldap-auth-client | ||
| - | ii ldap-auth-config | ||
| - | ii ldap-utils | ||
| - | ii libaprutil1-ldap: | ||
| - | ii libldap-2.4-2: | ||
| - | ii libldap2-dev: | ||
| - | ii libnss-ldap: | ||
| - | ii libpam-ldap: | ||
| - | |||
| - | $ apt-cache depends ldap-utils | ||
| - | ldap-utils | ||
| - | Depends: libc6 | ||
| - | Depends: libldap-2.4-2 | ||
| - | Depends: libsasl2-2 | ||
| - | Conflicts: < | ||
| - | Conflicts: < | ||
| - | Conflicts: < | ||
| - | Recommends: libsasl2-modules | ||
| - | | ||
| - | Suggests: libsasl2-modules-gssapi-heimdal | ||
| - | Replaces: < | ||
| - | ldap-utils | ||
| - | Replaces: < | ||
| - | Replaces: slapd | ||
| - | </ | ||
| - | |||
| - | Die globale Konfigurationsdatei ist **/ | ||
| - | |||
| - | < | ||
| - | tls_cacert / | ||
| - | </ | ||
| - | |||
| - | Verschlüsseltes ldapsearch mit Anmeldung: | ||
| - | |||
| - | < | ||
| - | $ ldapsearch -H ldaps:// | ||
| - | </ | ||
| - | |||
| - | Hier der access-Log bei Verschlüsselung: | ||
| - | < | ||
| - | CONN=5876 | ||
| - | [28/ | ||
| - | [28/ | ||
| - | [28/ | ||
| - | [28/ | ||
| - | [28/ | ||
| - | [28/ | ||
| - | [28/ | ||
| - | [28/ | ||
| - | [28/ | ||
| - | </ | ||
| - | |||
| - | |||
| - | Unverschlüsseltes ldapsearch mit Anmeldung ohne das **s**: | ||
| - | |||
| - | < | ||
| - | $ ldapsearch -H ldap:// | ||
| - | </ | ||
| - | |||
| - | ==== Name Service Switch unter Ubuntu 16.04.2 LTS ==== | ||
| - | |||
| - | Zuerst muss der client wissen, wofür welche Services genutzt werden sollen, hier werden speziell die Nutzer- und Gruppendaten in der Datei **/ | ||
| - | |||
| - | < | ||
| - | ... | ||
| - | passwd: | ||
| - | group: | ||
| - | ... | ||
| - | </ | ||
| - | |||
| - | Beschreibung der LDAP-Servers in **/ | ||
| - | |||
| - | < | ||
| - | base ou=in, | ||
| - | uri ldaps:// | ||
| - | ldap_version 3 | ||
| - | binddn | ||
| - | bindpw PASSWORD | ||
| - | rootbinddn cn=ivlbild, | ||
| - | pam_password md5 | ||
| - | tls_cacertfile / | ||
| - | </ | ||
| - | |||
| - | In **/ | ||
| - | ou=in, | ||
| - | |||
| - | < | ||
| - | root@ivlbild: | ||
| - | ivlbild login: i_gast00 | ||
| - | Password: | ||
| - | Last login: Thu Apr 27 16:13:37 CEST 2017 on pts/0 | ||
| - | Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-75-generic x86_64) | ||
| - | .... | ||
| - | No directory, logging in with HOME=/ | ||
| - | i_gast00@ivlbild:/ | ||
| - | Abgemeldet | ||
| - | root@ivlbild: | ||
| - | </ | ||
| - | |||
| - | |||
| - | ==== Python-LDAP-Clients in Solaris 10 ==== | ||
| - | |||
| - | Die OpneCSW-Pakete stellen für Python unter Solaris 10 die aktuellen Module bereit: | ||
| - | |||
| - | < | ||
| - | $ / | ||
| - | ... | ||
| - | CSWliblber2-4-2 | ||
| - | CSWlibldap-r2-4-2 | ||
| - | CSWlibldap2-4-2 | ||
| - | ... | ||
| - | CSWopenssh-client | ||
| - | CSWopenssl-utils | ||
| - | CSWpkgutil | ||
| - | CSWpy-ldap | ||
| - | CSWpy-mysql | ||
| - | CSWpython | ||
| - | CSWpython27 | ||
| - | ... | ||
| - | </ | ||
| - | |||
| - | Die Konfiguratin des LDAP-cliens erfolgt in cat / | ||
| - | |||
| - | < | ||
| - | TLS_CACERTDIR / | ||
| - | TLS_REQCERT | ||
| - | </ | ||
| - | |||
| - | Die Wurzel-CAs in das TLS_CACERTDIR kopieren und mit dem passenden Hash (aus dem gleichem Paket erzeugt!) verlinken: | ||
| - | |||
| - | < | ||
| - | # cd / | ||
| - | # ln -s ca3.cert $(/ | ||
| - | # ln -s CA4.crt $(/ | ||
| - | # ls -l | ||
| - | Gesamt 14 | ||
| - | lrwxrwxrwx | ||
| - | lrwxrwxrwx | ||
| - | lrwxrwxrwx | ||
| - | -rw-r--r-- | ||
| - | -rw-r--r-- | ||
| - | lrwxrwxrwx | ||
| - | </ | ||
| - | |||
| - | Die Hashes 9e909c3d und e0aa5bd7 wurden mit einer alten openssl-Version erzeugt und erwiesen sich als unbrauchbar. Der Test mit Python: | ||
| - | |||
| - | < | ||
| - | $ / | ||
| - | Python 2.6.9 (unknown, Mar 3 2016, 10:50:46) [C] on sunos5 | ||
| - | Type " | ||
| - | >>> | ||
| - | >>> | ||
| - | >>> | ||
| - | 1 | ||
| - | >>> | ||
| - | >>> | ||
| - | 1 | ||
| - | >>> | ||
| - | $ / | ||
| - | Python 2.7.11 (default, Mar 14 2016, 12: | ||
| - | [GCC 5.2.0] on sunos5 | ||
| - | Type " | ||
| - | >>> | ||
| - | >>> | ||
| - | >>> | ||
| - | 1 | ||
| - | >>> | ||
| - | >>> | ||
| - | 1 | ||
| - | >>> | ||
| - | </ | ||
| - | |||
rhel/ldap-ssl.1494486523.txt.gz · Zuletzt geändert: (Externe Bearbeitung)
