Anatol: ldap_start_tls

Beitrag lesen

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