2010-04-22 17 views

Respuesta

18

Puede pasar por alto la validez de las ventanas mediante la emisión de

putenv('LDAPTLS_REQCERT=never'); 

en el código php. En * nix que necesita para editar su /etc/ldap.conf para contener

TLS_REQCERT never 

Otra cosa a tener en cuenta es que se requiere la versión 3 (versión 2 es por defecto php):

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

Para tener una mejor idea de lo que está pasando, puede activar el registro de depuración por:

ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7); 

Esto se puede hacer antes de la ldap_connect tiene lugar.

+0

Hacer esto no funcionó. Lo que tenía que hacer (siguiendo el hilo en: http://www.mediawiki.org/wiki/Thread:Extension_talk:LDAP_Authentication/Unable_to_start_TLS_-_Warning_on_line_577), era establecer $ wgLDAPEncryptionType = array ('YOUR_DOMAIN' => 'clear'); en LocalSettings.php. Eso lo hizo funcionar inmediatamente. –

+3

No por favor, al deshabilitar la verificación del certificado, se abre un agujero de seguridad al permitir que el hombre en el ataque medio. ¡Estás encriptando la transmisión sin verificar el destino! – svandragt

+0

@svandragt Ni siquiera me importa en este punto. Si me devuelve algo que no es un error, estaré eternamente agradecido. En un sistema de Windows ejecutando PHP 5.3, la respuesta anterior no funciona –

2

Mi solución/solución consiste en utilizar

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

Si usted tiene alguna idea mejor, por favor, puesto otra respuesta.

1

El camino para ldap.conf en Windows es fijo:

c: \ openldap \ sysconf \ ldap.conf

Un reinicio del servidor web puede ser necesario para aplicar los cambios.

+0

No tengo ese directorio en mi sistema –

1
  1. En los sistemas basados ​​en Debian:

    Instala el paquete: ldap-utils y en el archivo /etc/ldap/ldap.conf, edite la línea:

    TLS_CACERT /etc/ldap/cacerts/cacert.asc 
    

    Cree el directorio /etc/ldap/cacerts y copiar el cacert a /etc/ldap/cacerts/cacert.asc

    Reiniciar apache.

  2. En los sistemas basados ​​en RedHat:

    Instala el paquete: openldap-clients y en el archivo /etc/openldap/ldap.conf editar la línea:

    TLS_CACERT /etc/openldap/cacerts/cacert.asc 
    

    Crear el directorio /etc/openldap/cacerts y copiar el cacert a /etc/openldap/cacerts/cacert.asc

    Reiniciar httpd

+0

Parece la respuesta correcta (copiar el certificado específico en el que quiero confiar en lugar de ignorar la verificación del certificado). Desafortunadamente, no puedo verificarlo más ya que obsoletamos esa configuración en particular. – user323094

+0

Menciona "editar la línea" pero no lo que se está editando realmente en la línea – user49438

+0

Quiero decir, asegúrese de que la línea que menciona TLS_CACERT tenga ese valor. –

0

Un poco de ayuda adicional para otros, la solución certificado aquí resuelto mi problema de la línea ldapsearch de comandos, pero aún PHP se quejaron **Can't contact LDAP server**

Resultó ser SELinux en RHEL7 bloques (CentOS7) HTTPD utilicen los puertos LDAP 389 y 636 de forma predeterminada, puede desbloquear con:

setsebool -P httpd_can_network_connect 1 

Consulte el archivo de registro de auditoría SELinux para ver los elementos bloqueados.

0

Pude hacerlo funcionar correctamente con openldap en Amazon Linux (Elastic Beanstalk PHP 7.0) con MacOS Server 5 LDAP, con TLS configurado para demandar.

en /etc/openldap/ldap.conf:

demanda TLS_REQCERT

TLS_CACERT /etc/openldap/certs/yourcacert.pem

(tenga en cuenta que si usted no está usando OpenLDAP, el ruta será /etc/ldap/certs/yourcacert.pem). Esta configuración no funcionó hasta que coloqué el certificado dentro de la carpeta certs; no funcionó desde ningún otro camino.

El certificado que se colocará en esa ruta NO es el certificado TLS del servidor. Es el certificado de CA (autoridad de certificación) de la autoridad que emitió el certificado de TLS específico del servidor/dominio. Solo el certificado de CA colocado en esa ruta permitirá que TLS funcione antes de intentar un enlace LDAP en php. Obtenga el certificado de CA de su servidor o descárguelo del sitio de la autoridad, están disponibles de forma gratuita.

Para comprobar si el enlace LDAP funciona incluso sin TLS, establezca TLS_REQCERT nunca temporalmente (es posible que tenga que comentar # out TLS_CACERT). Si obtiene "No se puede conectar a LDAP", no es un error de TLS; simplemente no puede conectarse al servidor y es probable que necesite abrir el puerto 389 (no 636 para TLS).

Recuerde reiniciar su servidor Apache cada vez que realice un cambio en el archivo o certificado de configuración.

Cuestiones relacionadas