Anatol: ldap_start_tls

Hallo Forum,

ich moechte mit PHP eine Verbindung zu einem LDAP Server herstellen.

Es existiert ein "Bind User" mit Passwort, der die erforderlichen Rechte hat. Verbindungen zum LDAP Server sind nur mit TLS zugelassen.

Ohne TLS bekomme ich deshalb die Fehlermeldung:
"Unable to bind to server: Confidentiality required"

Mit ldap_start_tls() kommt aber keine Verbindung zustande:
"Unable to start TLS: Connect error"
und als Folge davon ist es natuerlich nicht moeglich ldap_bind() erfolgreich aufzurufen:
"Unable to bind to server: Can't contact LDAP server"

Wenn diese Information hilft: Der Server, auf dem das PHP-Script liegt, ist (leider) ein Windows-Server (Apache 2, PHP 5).

Leider ist ldap_start_tls() in der PHP-Dokumentation komplett undokumentiert, Kommentare dazu haben mir leider nicht weitergeholfen und ich konnte auch keinen Eintrag in diesem Forum zu dem Thema finden.

Wenn jemand Erfahrung mit PHP, LDAP und TLS hat waere ich sehr dankbar fuer jeden Tipp.

Im folgenden noch ein knappes "Test-Script":

  
<?php  
ini_set('display_errors', 'On');  
error_reporting(E_ALL ^ E_NOTICE);  
  
$ldap_host = 'ldap://ldap.server.auckland.ac.nz';  
$ldap_port = 389; // ldaps: 636, ldap: 389  
$ldap_bind_user = 'username';  
$ldap_bind_password = 'password';  
  
// change to ldap version 3 (required for TLS)  
$ldap_conn = ldap_connect($ldap_host, $ldap_port);  
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);  
  
if ($ldap_conn) {  
    ldap_start_tls($ldap_conn); // wird diese Zeile auskommentiert kommt es zu der Fehlermeldung: "Confidentiality required"  
  
    // binding to ldap server  
    $ldap_bind = ldap_bind($ldap_conn, $ldap_bind_user, $ldap_bind_password);  
}  
?>  

Viele Gruesse
Anatol

  1. hi,

    Mit ldap_start_tls() kommt aber keine Verbindung zustande:
    "Unable to start TLS: Connect error"

    Googlen nach der Meldung bringt bspw. http://www.nabble.com/can't-get-StartTLS-working-(Unable-to-start-TLS:-Connect-error)-t2353221.html, und dort wird es wohl auf Probleme mit den Konfigurationsdateien und demzufolge mit den Zertifikaten geschoben.

    http://bugs.php.net/bug.php?id=17738 dreht sich ebenfalls um dieses Thema - da wird u.a. vom Austausch eines Wildcard-Zertifikates, mit welchem es von der command line problemlos "funktioniert", aus PHP heraus aber nicht, durch ein spezieller qualifiziertes gesprochen.

    Schau doch mal, ob dir das weiterhilft.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hi,

      Danke fuer die Tipps. Wenn ich das Problem (hoffentlich) geloest habe, kann ich das hier im Forum posten.

      Schoene Gruesse
      Anatol