Prueba de conectividad de LDAP seguro

Ediciones admitidas para esta función: Frontline Standard y Frontline Plus; Business Plus; Enterprise Standard y Enterprise Plus; Education Fundamentals, Education Standard y Education Plus; Enterprise Essentials Plus. Comparar tu edición

Antes de intentar conectar tu cliente LDAP al servicio LDAP seguro, opcionalmente, puedes realizar una prueba de conectividad rápida con herramientas simples como ldapsearch, ADSI o ldp.exe. Estas herramientas también se pueden usar para solucionar problemas si encuentras errores cuando intentas conectar tu cliente LDAP al servicio.

Las pruebas que se describen en las siguientes secciones te permiten comprender si tienes un problema de configuración, los mensajes de error comunes y las recomendaciones para solucionar esos problemas.

En este artículo, se incluyen las siguientes secciones:

Nota: Si necesitas comunicarte con el equipo de asistencia de Google Workspace o el equipo de asistencia premium de Cloud Identity durante este proceso, asegúrate de guardar el resultado de los comandos. Asegúrate de quitar toda la información de identificación personal de los resultados antes de compartirlos con el equipo de asistencia.

Verifica la conectividad y ejecuta una consulta de LDAP

Una vez que configures el servicio de LDAP seguro en la Consola del administrador de Google, podrás usar una de estas tres herramientas sencillas para verificar la conectividad con LDAP seguro: ldapsearch, ADSI o ldp.exe. Para obtener detalles e instrucciones, consulta las secciones a continuación.

ldapsearch

Usa la utilidad ldapsearch desde una línea de comandos para realizar una consulta LDAP básica. Un resultado exitoso de la consulta LDAP indica que el cliente LDAP, la sesión TLS subyacente y la conexión TCP funcionan según lo previsto.

Para probar la conectividad con ldapsearch, haz lo siguiente:

  1. Crea una configuración de LDAP y descarga el certificado siguiendo las instrucciones en Cómo agregar clientes de LDAP.

    Nota: Para simplificar el entorno de pruebas, asegúrate de que haya al menos un usuario en la unidad organizativa para la que autorizas el acceso del cliente de LDAP.

  2. Ejecuta una consulta de LDAP. En este ejemplo, se consulta a un usuario en particular (para obtener más detalles, consulta OpenLDAP ldapsearch).

    LDAPTLS_CERT={crt_file} LDAPTLS_KEY={key_file} ldapsearch -H ldaps://ldap.google.com:636 -b dc={domain},dc={domain} '(mail={user_email})'

    Reemplaza los marcadores de posición de la siguiente manera:

    • {crt_file}: Es el nombre del archivo .crt.
    • {key_file}: Es el nombre del archivo .key.
    • {domain} Cada parte del nombre de dominio, por ejemplo: example.com se convertiría en "dc=example,dc=com"
    • {user_email}: Es la dirección de correo electrónico principal de un usuario del dominio.

Notas sobre el uso de ldapsearch

  • Si no se proporciona ningún valor de BindDN, ldapsearch usa la clave y el certificado para autorizar la búsqueda.
  • Si el valor de BindDN es un nombre de usuario de LDAP que generaste en la Consola del administrador, ldapsearch usará los permisos del cliente de LDAP tal como se configuraron en la Consola del administrador.

    ldapsearch -H ldaps://ldap.google.com:636 -b dc={domain},dc={domain} -D {ldap_access_credentials_username} -W '(mail={user_email})

  • Si el valor de BindDN es una dirección de correo electrónico o un nombre distinguido de LDAP de un usuario de Workspace, ldapsearch usará las credenciales de ese usuario para realizar la búsqueda según sus permisos.

    ldapsearch -H ldaps://ldap.google.com:636 -b dc={domain},dc={domain} -D {workspace_username@domain} -W '(mail={user_email})'

Cómo usar ldapsearch con stunnel

Si tu implementación requiere que uses stunnel, sigue estos pasos:

  1. En la Consola del administrador, genera credenciales de acceso para producir el nombre de usuario y la contraseña que necesita ldapsearch.
  2. Usa el siguiente comando:

    ldapsearch -x -D "{username}" -w {password} -H ldap://{stunnel_host}:{stunnel_port} -b dc={domain},dc={domain} '(mail={user_email})'

    Reemplaza los marcadores de posición de la siguiente manera:

    • {username}: Nombre de usuario de las credenciales generadas en la Consola del administrador
    • {password} Contraseña de las credenciales generadas en la Consola del administrador
    • {stunnel_host} : Es la dirección IP o el nombre de host de la máquina que ejecuta stunnel en tu red.
    • {stunnel_port} : Es el puerto en el que se ejecuta stunnel. Consulta la configuración de stunnel.
    • {user_email}: Dirección de correo electrónico principal de un usuario del dominio

Situación exitosa del comando ldapsearch

Un resultado exitoso del comando ldapsearch mostrará al usuario con el correo electrónico (como se especificó cuando se creó el cliente de LDAP) en formato LDIF.

Por ejemplo:

# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# example.com
dn: dc=example,dc=com
objectClass: top
objectClass: domain
objectClass: dcObject
dc: example

# admin-group, Groups, example.com
dn: cn=admin-group,ou=Groups,dc=example,dc=com
objectClass: top
objectClass: groupOfNames
objectClass: posixGroup
cn: admin-group
displayName: admin-group
description:
gidNumber: 12345
member: uid=admin,ou=Users,dc=example,dc=com
memberUid: admin
googleAdminCreated: FALSE


# example-user, Users, example.com
dn: uid=example-user,ou=Users,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
uid: example-user
googleUid: example-user
posixUid: example-user
cn: example-user
cn: FirstName LastName
sn: FirstName
displayName: FirstName LastName
givenName: FirstName
mail: example-user@example.com
uidNumber: 12345
gidNumber: 12345
homeDirectory: /home/example-user
loginShell: /bin/bash
gecos:

Posibles errores

  • El cliente o la biblioteca de OpenLDAP se compilan sin compatibilidad con SNI

    El cliente LDAP (OpenLDAP en este caso) debe admitir SNI (indicación del nombre del servidor). Si SNI no está disponible, es posible que veas un error similar al siguiente:

    SASL/EXTERNAL authentication started

    ldap_sasl_interactive_bind_s: Unknown authentication method (-6)
    additional info: SASL(-4): no mechanism available:

    Recomendación:
    • Si usas macOS, SASL está habilitado de forma predeterminada y se puede omitir con la opción "-x".
    • Agrega la opción -d5 a ldapsearch y verifica que el resultado contenga la siguiente línea:

      TLS certificate verification: depth: 0, err: 18, subject: /OU=No SNI provided; please fix your client.
  • ldapsearch devuelve el estado 0 (correcto), pero no se muestran usuarios

    Si se especifica la opción ldapsearch -x (usar autenticación SASL) con certificados de cliente, la autenticación se realizará correctamente, pero no se mostrarán los usuarios del dominio.

    Recomendación: Quita la opción -x y vuelve a intentarlo.

ADSI Edit (Windows)

  1. Sigue los pasos del 1 al 11 en ldp.exe (Windows) para instalar los certificados de cliente.
  2. Ve a Action > Connect to….
  3. Ingresa la siguiente configuración de conexión:

    Nombre: Escribe un nombre para tu conexión, como LDAP de Google.
    Punto de conexión: "Selecciona o escribe un nombre distintivo o un contexto de nombres"
    Ingresa tu nombre de dominio en formato DN (por ejemplo, dc=example,dc=com para example.com).

    Computadora: "Selecciona o escribe un dominio o un servidor"
    ldap.google.com

    Usar encriptación basada en SSL: Seleccionado
  4. Haz clic en Avanzado… y, luego, ingresa los siguientes detalles:

    Especificar credenciales: Marcada
    Nombre de usuario: El nombre de usuario de la credencial de acceso de la Consola del administrador
    Contraseña: La contraseña de la credencial de acceso de la Consola del administrador
    Número de puerto: 636
    Protocolo: LDAP
    Autenticación de vinculación simple: Marcada
  5. Haz clic en Aceptar y, luego, vuelve a hacer clic en Aceptar.
  6. Si la conectividad se realiza correctamente, el contenido del directorio en el DN base se muestra en el panel derecho.

ldp.exe (Windows)

  1. Instala OpenSSL.
  2. Convierte los archivos de certificado y clave en un archivo con formato PKCS12. En el símbolo del sistema, ingresa lo siguiente:

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    Ingresa una contraseña para encriptar el archivo de salida.
  3. Ve al Panel de control.
  4. En el cuadro de búsqueda, busca "certificado" y haz clic en Administrar certificados de usuario.
  5. Ve a Action > All Tasks > Import…
  6. Selecciona Usuario actual y haz clic en Siguiente.
  7. Haz clic en Explorar….
  8. En el menú desplegable tipo de archivo, ubicado en la esquina inferior derecha del cuadro de diálogo, selecciona Intercambio de información personal (*.pfx; *.p12).
  9. Selecciona el archivo ldap-client.p12 del paso 2, haz clic en Abrir y, luego, en Siguiente.
  10. Ingresa la contraseña del paso 2 y haz clic en Siguiente.
  11. Selecciona el almacén de certificados Personal, haz clic en Siguiente y, luego, en Finalizar.
  12. Ejecuta Ldp.exe.
  13. Ve a Connection > Connect….
  14. Ingresa los siguientes detalles de conexión:

    Servidor: ldap.google.com
    Puerto: 636
    Sin conexión: Sin marcar
    SSL: Marcado
  15. Haz clic en Aceptar.
  16. Ve a Ver > Árbol.
  17. Ingresa el DN base. Este es tu nombre de dominio en formato DN. (por ejemplo, dc=example,dc=com para example.com).
  18. Haz clic en Aceptar.
  19. Si la conectividad se realiza correctamente, el contenido del directorio en el DN base se muestra en el panel derecho.

Si es necesario, ejecuta pruebas de conectividad básicas

Si no puedes obtener un resultado exitoso en Verifica la conectividad y ejecuta una consulta LDAP, sigue las instrucciones de esta sección para probar la conectividad. Si ldapsearch no devuelve el usuario esperado y no indica claramente que la sesión TLS subyacente se realizó correctamente, usa el cliente de OpenSSL para verificar que las capas de red en las que se basa OpenLDAP funcionen según lo previsto.

Para realizar pruebas de conectividad básicas, haz lo siguiente:

  1. Instala la utilidad de cliente openssl para tu sistema operativo.

    La mayoría de las distribuciones de GNU/Linux usan el nombre de paquete "openssl". Consulta los detalles sobre otros sistemas operativos.

  2. Realiza una conexión manual al servicio LDAP seguro con el cliente openssl:

    openssl s_client -connect ldap.google.com:636
    

    Confirma que la negociación de SSL se realizó correctamente con la presencia de la siguiente línea al final del resultado de openssl s_client:

    Verify return code: 0 (ok)
    

Posibles errores

El cliente o la biblioteca de OpenSSL no admiten SNI (indicación de nombre del servidor)

Durante la prueba de conectividad, es posible que se muestre el siguiente resultado:

Verify return code: 18 (self signed certificate)

El servicio de LDAP seguro requiere un cliente de TLS que admita e inicie una sesión de TLS con SNI (indicación de nombre del servidor). Si el cliente de TLS no admite SNI, el servidor de TLS (ldap.google.com) devuelve un certificado autofirmado que no pasará las verificaciones de validación de la CA para indicar que se requiere SNI.

Este comportamiento se puede confirmar verificando la siguiente línea cerca del inicio del resultado del cliente de OpenSSL:

depth=0 OU = "No SNI provided; please fix your client.", CN = invalid2.invalid

Entre las causas de este error, se pueden incluir una versión de OpenSSL que no admite SNI o una aplicación que usa la biblioteca de OpenSSL con SNI inhabilitado de forma explícita.

Se rechazó la conexión

Si se muestra el siguiente resultado, en el que {timestamp} es una marca de tiempo de UNIX en microsegundos, significa que se rechaza activamente la conexión TCP antes de que pueda comenzar la negociación de TLS:

{timestamp}:error:0200206F:system library:connect:Connection refused:crypto/bio/b_sock2.c:110:
{timestamp}:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111:connect:errno=111

Esto puede deberse a lo siguiente:

  • Un firewall a nivel de la aplicación o del sistema en la máquina local
  • Un firewall en la misma red física o en la red upstream

Para investigar, usa tcptraceroute y determina qué host rechaza la conexión (por ejemplo, tcptraceroute ldap.google.com 636).