2010-04-22 5 views

risposta

18

È possibile ignorare la validità in finestre mediante l'emissione di

putenv('LDAPTLS_REQCERT=never'); 

nel codice php. In * nix è necessario modificare la vostra /etc/ldap.conf per contenere

TLS_REQCERT never 

Un'altra cosa da essere consapevoli è che esso richiede la versione 3 (versione 2 è php di default):

$con = ldap_connect($hostnameSSL); 
ldap_set_option($con, LDAP_OPT_PROTOCOL_VERSION, 3); 

per avere una migliore idea di quello che sta succedendo, è possibile attivare la registrazione di debug da:

ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); 

Questo può essere fatto prima che il ldap_connect avviene.

+0

fare proprio questo non ha funzionato per me. Quello che dovevo fare (seguendo il thread su: http://www.mediawiki.org/wiki/Thread:Extension_talk:LDAP_Authentication/Unable_to_start_TLS_-_Warning_on_line_577), era di impostare $ wgLDAPEncryptionType = array ('YOUR_DOMAIN' => 'clear'); in LocalSettings.php. Questo ha funzionato immediatamente. –

+3

Si prega di non disabilitare la verifica del certificato aprendo un buco di sicurezza consentendo l'attacco dell'uomo in mezzo. Stai crittografando la trasmissione senza verificare la destinazione! – svandragt

+0

@svandragt non mi importava neanche a questo punto. Se mi restituirà qualcosa che non sia un errore, sarò eternamente grato. Su un sistema Windows con PHP 5.3, la risposta di cui sopra non funziona –

2

La mia soluzione/soluzione è utilizzare

/etc/ldap/ldap.conf: 
#TLS_CACERT /etc/ssl/certs/ca.crt 
TLS_REQCERT never 

Se avete qualche idea migliore, si prega di inviare un'altra risposta.

1

Il percorso per ldap.conf in Windows è fissato:

c: \ openldap \ sysconf \ ldap.conf

un riavvio del server web può essere richiesto per applicare le modifiche.

+0

Non ho quella directory sul mio sistema –

1
  1. Nei sistemi debian based:

    Installare il pacchetto: ldap-utils e nel file /etc/ldap/ldap.conf, modificare la riga:

    TLS_CACERT /etc/ldap/cacerts/cacert.asc 
    

    Creare la directory /etc/ldap/cacerts e copiare i CAcert per /etc/ldap/cacerts/cacert.asc

    Riavvio apache.

  2. Nei sistemi RedHat based:

    Installare il pacchetto: openldap-clients e nel file /etc/openldap/ldap.conf modificare la linea:

    TLS_CACERT /etc/openldap/cacerts/cacert.asc 
    

    Creare la directory /etc/openldap/cacerts e copiare il CAcert per /etc/openldap/cacerts/cacert.asc

    Riavviare httpd

+0

Questa sembra la risposta corretta (copia del cert specifico che voglio fidarmi invece di ignorare la verifica del certificato). Sfortunatamente, non posso più verificarlo poiché abbiamo reso obsoleto quel particolare setup. – user323094

+0

Indica "modifica la linea" ma non quello che viene effettivamente modificato nella riga – user49438

+0

intendevo, assicurati che la linea che cita TLS_CACERT abbia quel valore. –

0

Qualche aiuto supplementare per gli altri, la soluzione del certificato qui Ha risolto il problema linea di ldapsearch di comando, ma ancora PHP lamentavano **Can't contact LDAP server**

Si è rivelato essere SELinux su RHEL7 blocchi (CentOS7) HTTPD di utilizzare le porte LDAP 389 e 636 per impostazione predefinita, è possibile sbloccare con:

setsebool -P httpd_can_network_connect 1 

Controllare il file di registro di controllo SELinux per gli elementi bloccati.

0

Sono riuscito a farlo funzionare correttamente con openldap su Amazon Linux (Elastic Beanstalk PHP 7.0) con LDAP MacOS Server 5, con TLS impostato su richiesta.

in /etc/openldap/ldap.conf:

domanda TLS_REQCERT

TLS_CACERT /etc/openldap/certs/yourcacert.pem

(notare che se non si utilizza OpenLDAP, il il percorso sarà /etc/ldap/certs/yourcacert.pem). Questa configurazione non ha funzionato fino a quando non ho inserito il certificato nella cartella certs; non ha funzionato da nessun altro percorso.

Il certificato ad essere messi in quel percorso non è il certificato TLS del server. È il certificato CA (Certificate Authority) dell'autorità che ha emesso il certificato TLS server/dominio specifico. Solo il certificato CA posto in quel percorso permetterà TLS di lavorare prima di tentare un binding LDAP in php. Prendi il certificato CA dal tuo server o scaricalo dal sito dell'autorità, sono disponibili gratuitamente.

Per verificare se il binding LDAP funziona anche senza TLS, impostare TLS_REQCERT mai temporaneamente (potrebbe essere necessario commentare # out TLS_CACERT). Se ottieni "Impossibile connettersi a LDAP" non si tratta di un errore TLS; semplicemente non può connettersi al server e probabilmente è necessario aprire la porta 389 (non 636 per TLS).

Ricordarsi di riavviare il server Apache ogni volta che si apporta una modifica al file di configurazione o il certificato.