Тестирование безопасного подключения к LDAP

Поддерживаемые версии для этой функции: Frontline Standard и Frontline Plus; Business Plus; Enterprise Standard и Enterprise Plus; Education Fundamentals, Education Standard и Education Plus; Enterprise Essentials Plus. Сравните вашу версию.

Прежде чем пытаться подключить свой LDAP-клиент к службе Secure LDAP, при желании можно провести быструю проверку подключения с помощью простых инструментов, таких как ldapsearch , ADSI или ldp.exe . Эти инструменты также можно использовать для устранения неполадок, если вы столкнетесь с ошибками при попытке подключения LDAP-клиента к службе.

Описанные в разделах ниже тесты помогут вам понять, есть ли у вас проблема с конфигурацией, какие часто встречаются сообщения об ошибках, а также рекомендации по устранению этих проблем.

Данная статья содержит следующие разделы:

Примечание: Если вам потребуется связаться со службой поддержки Google Workspace или Cloud Identity Premium в процессе выполнения команд, обязательно сохраните их вывод. Перед тем как передавать результаты команде поддержки, убедитесь, что вы удалили из них любую информацию, позволяющую идентифицировать личность.

Проверьте подключение и выполните LDAP-запрос.

После настройки службы Secure LDAP в консоли администратора Google вы можете использовать один из этих трех простых инструментов для проверки подключения к Secure LDAP: ldapsearch , ADSI или ldp.exe . Подробную информацию и инструкции см. в разделах ниже.

ldapsearch

Используйте утилиту ldapsearch из командной строки для выполнения простого LDAP-запроса. Успешный результат LDAP-запроса указывает на то, что LDAP-клиент, базовая TLS-сессия и TCP-соединение работают должным образом.

Для проверки подключения к ldapsearch :

  1. Создайте конфигурацию LDAP и загрузите сертификат, следуя инструкциям в разделе «Добавление клиентов LDAP» .

    Примечание: Для упрощения среды тестирования убедитесь, что в организационном подразделении, для которого вы разрешили доступ LDAP-клиента, есть хотя бы один пользователь.

  2. Выполните LDAP-запрос. В этом примере выполняется запрос к конкретному пользователю (подробнее см. 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})'

    Замените заполнители следующим образом:

    • {crt_file} Имя файла .crt
    • {key_file} Имя файла с расширением .key
    • Каждая часть доменного имени, например: example.com, станет "dc=example,dc=com".
    • {user_email} Основной адрес электронной почты пользователя в домене.

Примечания по использованию ldapsearch

  • Если значение BindDN не указано, ldapsearch использует ключ и сертификат для авторизации поиска.
  • Если значение BindDN представляет собой имя пользователя LDAP, сгенерированное вами в консоли администратора , ldapsearch будет использовать права доступа клиента LDAP, настроенные в консоли администратора.

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

  • Если значение BindDN представляет собой адрес электронной почты или отличительное имя LDAP пользователя рабочей области, ldapsearch будет использовать учетные данные этого пользователя для поиска на основе его прав доступа.

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

Используйте ldapsearch с stunnel

Если для развертывания требуется использовать stunnel , выполните следующие действия:

  1. В консоли администратора сгенерируйте учетные данные доступа , чтобы получить имя пользователя и пароль, необходимые для работы ldapsearch.
  2. Используйте следующую команду:

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

    Замените заполнители следующим образом:

    • {username} Имя пользователя из сгенерированных учетных данных в консоли администратора
    • {password} Пароль из сгенерированных учетных данных в консоли администратора
    • {stunnel_host}: IP-адрес или имя хоста машины, на которой запущен stunnel в вашей сети.
    • {stunnel_port}: порт, на котором запущен stunnel; проверьте конфигурацию stunnel.
    • {user_email} Основной адрес электронной почты пользователя в домене

Успешный сценарий выполнения команды ldapsearch

В случае успешного выполнения команды ldapsearch будет отображен список пользователей с указанным адресом электронной почты (как было указано при создании LDAP-клиента) в формате LDIF.

Например:

# 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:

Возможные ошибки

  • Клиент и/или библиотека OpenLDAP скомпилированы без поддержки SNI.

    Для корректной работы LDAP-клиента (в данном случае OpenLDAP ) требуется поддержка SNI (Server Name Indication). Если SNI недоступен, может появиться ошибка, подобная следующей:

    SASL/EXTERNAL authentication started

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

    Рекомендация:
    • Если вы используете macOS, SASL включен по умолчанию и может быть отключен с помощью опции "-x".
    • Добавьте опцию -d5 к команде ldapsearch и проверьте вывод на наличие следующей строки:

      TLS certificate verification: depth: 0, err: 18, subject: /OU=No SNI provided; please fix your client.
  • Команда ldapsearch возвращает статус 0 (успех), но данные о пользователях не отображаются.

    Указание параметра -x (использовать аутентификацию SASL) для ldapsearch с использованием клиентских сертификатов позволит успешно выполнить аутентификацию, но не отобразит список пользователей в домене.

    Рекомендация: Удалите опцию -x и попробуйте снова.

ADSI Edit (Windows)

  1. Выполните шаги 1–11 в программе ldp.exe (Windows) , чтобы установить клиентские сертификаты.
  2. Перейдите в раздел Действия > Подключиться к…
  3. Введите следующие параметры подключения:

    Имя: Введите имя для вашего подключения, например, Google LDAP .
    Точка подключения: «Выберите или введите отличительное имя или контекст именования».
    Введите доменное имя в формате DN (например, dc=example,dc=com для example.com ).

    Компьютер: "Выберите или введите домен или сервер"
    ldap.google.com

    Использовать шифрование на основе SSL: Отмечено
  4. Нажмите «Дополнительно...» и введите следующие данные:

    Укажите учетные данные: Отмечено
    Имя пользователя: имя пользователя для доступа из консоли администратора.
    Пароль: Пароль для доступа к консоли администратора.
    Номер порта: 636
    Протокол: LDAP
    Простая аутентификация по привязке: Отмечено
  5. Нажмите ОК , а затем нажмите ОК еще раз.
  6. Если соединение установлено успешно, содержимое каталога в базовом DN отображается в правой панели.

ldp.exe (Windows)

  1. Установите OpenSSL .
  2. Преобразуйте файлы сертификата и ключа в один файл формата PKCS12. В командной строке введите следующее:

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

    Введите пароль для шифрования выходного файла.
  3. Перейдите в Панель управления.
  4. В поле поиска введите «сертификат» и нажмите «Управление пользовательскими сертификатами ».
  5. Перейдите в раздел Действия > Все задачи > Импорт…
  6. Выберите «Текущий пользователь» и нажмите «Далее» .
  7. Нажмите «Обзор»…
  8. В раскрывающемся списке «Тип файла» в правом нижнем углу диалогового окна выберите «Обмен личной информацией (*.pfx;*.p12)» .
  9. Выберите файл ldap-client.p12 из шага 2, нажмите «Открыть» , а затем нажмите «Далее» .
  10. Введите пароль из шага 2 и нажмите «Далее» .
  11. Выберите хранилище личных сертификатов, нажмите « Далее» , а затем нажмите «Готово» .
  12. Запустите Ldp.exe .
  13. Перейдите в раздел «Подключение» > «Подключиться...».
  14. Введите следующие данные для подключения:

    Сервер: ldap.google.com
    Порт: 636
    Отсутствие связи: Не отмечено
    SSL: Проверено
  15. Нажмите ОК .
  16. Перейдите в меню «Вид» > «Дерево» .
  17. Введите базовый DN. Это ваше доменное имя в формате DN (например, dc=example,dc=com для example.com ).
  18. Нажмите ОК .
  19. Если соединение установлено успешно, содержимое каталога в базовом DN отображается в правой панели.

При необходимости проведите базовое тестирование подключения.

Если вам не удается получить успешный результат при проверке подключения и выполнении LDAP-запроса , следуйте инструкциям в этом разделе для проверки подключения. Если ldapsearch не возвращает ожидаемого пользователя и не дает четкого указания на успешность базовой сессии TLS, используйте клиент OpenSSL для проверки того, что сетевые уровни, на которые опирается OpenLDAP, работают должным образом.

Для проведения базовой проверки подключения:

  1. Установите утилиту openssl client для вашей операционной системы.

    В большинстве дистрибутивов GNU/Linux используется имя пакета "openssl". Подробнее о других операционных системах см. здесь.

  2. Установите ручное соединение со службой Secure LDAP с помощью клиента openssl :

    openssl s_client -connect ldap.google.com:636
    

    Подтверждение успешного завершения SSL-соглашения подтверждается наличием следующей строки в конце вывода команды openssl s_client:

    Verify return code: 0 (ok)
    

Возможные ошибки

Клиент/библиотека OpenSSL не поддерживает SNI (Server Name Indication).

В ходе проверки подключения может быть получен следующий результат:

Verify return code: 18 (self signed certificate)

Для работы службы Secure LDAP требуется TLS-клиент, поддерживающий и инициирующий TLS-сессию с использованием SNI (Server Name Indication). Если TLS-клиент не поддерживает SNI, TLS-сервер (ldap.google.com) возвращает самоподписанный сертификат, который не пройдет проверку центра сертификации, что указывает на необходимость использования SNI.

Это поведение можно подтвердить, проверив вывод клиента OpenSSL на наличие следующей строки в начале вывода:

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

Причинами этой ошибки могут быть версия OpenSSL, не поддерживающая SNI, или приложение, использующее библиотеку OpenSSL с явно отключенной поддержкой SNI.

В соединении отказано

Если возвращается следующий вывод, где {timestamp} — это метка времени UNIX в микросекундах, это означает, что TCP-соединение активно отклоняется до начала согласования 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

Причиной этого могут быть следующие факторы:

  • Межсетевой экран прикладного или системного уровня на локальном компьютере.
  • Межсетевой экран, расположенный в той же физической сети или в вышестоящей сети.

Для расследования используйте команду tcptraceroute , чтобы определить, какой хост отклоняет соединение — например, tcptraceroute ldap.google.com 636 .