Тестирование безопасного подключения к 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-клиента к службе.

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

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

Note: If you need to contact Google Workspace Support or Cloud Identity Premium Support during this process, be sure to save the output of the commands. Make sure you remove any personally identifiable information from the output before sharing them with the support team.

Проверьте подключение и выполните 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. Установите соединение с защищенной службой 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 .