Saltar al contenido principal

Windows Server

El módulo ldap de PHP en Windows se carga como php_ldap.dll y utiliza las bibliotecas cliente de OpenLDAP. Al conectarse mediante LDAPS o utilizando StartTLS, el certificado del servidor no se verifica mediante el almacén de certificados de Windows, sino mediante la capa TLS utilizada por OpenLDAP.

Añadir el certificado al almacén de certificados de confianza de Windows no se utiliza al verificar una conexión LDAPS en php_ldap.dll y no afecta a OpenLDAP. OpenLDAP debe recibir la ruta al certificado de CA o al paquete de CA que emitió el certificado del servidor del servicio de directorio.

Cómo funciona

Cuando se establece una conexión TLS, el servidor LDAP envía su certificado. OpenLDAP comprueba si se puede construir una cadena de confianza desde este certificado hasta una entidad certificadora conocida. Si el certificado de CA no está especificado en la configuración de OpenLDAP, la conexión fallará con un error de verificación de certificado.

En Windows, PHP LDAP suele utilizar el archivo ldap.conf. El parámetro TLS_CACERT de este archivo define la ruta al certificado de CA o al archivo de paquete. Para que el proceso de PHP utilice el archivo de configuración y el certificado requeridos, establezca las variables de entorno del sistema LDAPCONF y LDAPTLS_CACERT.

Configuración

peligro

Tenga en cuenta:

  • Los comandos deben ejecutarse en PowerShell como administrador.
  • Después de realizar los cambios, reinicie Windows Server para que todos los procesos reciban el entorno actualizado.
  1. Cree un directorio para la configuración de OpenLDAP:
New-Item -ItemType Directory -Force C:\openldap\sysconf
  1. Coloque el certificado de CA o el paquete de CA en el directorio:
C:\openldap\sysconf\ldaps-ca-bundle.cer

El archivo debe estar en formato PEM/Base64:

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

Si se utiliza una CA intermedia en la infraestructura, añada la cadena completa de certificados de CA al mismo archivo.

  1. Cree el archivo C:\openldap\sysconf\ldap.conf con el siguiente contenido:
TLS_CACERT C:/openldap/sysconf/ldaps-ca-bundle.cer

TLS_REQCERT demand
info

TLS_CACERT especifica la ruta al paquete de CA. Se recomienda utilizar barras diagonales / en la ruta.

  1. Establezca las variables de entorno del sistema para OpenLDAP:
[Environment]::SetEnvironmentVariable("LDAPCONF", "C:\openldap\sysconf\ldap.conf", "Machine")
[Environment]::SetEnvironmentVariable("LDAPTLS_CACERT", "C:/openldap/sysconf/ldaps-ca-bundle.cer", "Machine")
  1. Reinicie IIS:
iisreset