Тестирование подключения и устранение неполадок

Эта функция доступна в пакетах G Suite Enterprise, Cloud Identity Premium, G Suite Enterprise for Education и G Suite for Education.

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

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

Статья состоит из следующих разделов:

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

Как проверить подключение и отправить запрос LDAP

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

ldapsearch

Чтобы отправить базовый запрос LDAP, запустите утилиту ldapsearch из командной строки. Положительный результат запроса LDAP указывает на то, что LDAP-клиент и соответствующие сеанс TLS и подключение по протоколу TCP работают в нормальном режиме.

Как проверить подключение с помощью ldapsearch

  1. Создайте конфигурацию LDAP и скачайте сертификат, следуя этим инструкциям.

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

    Ниже приведен пример команды, которая позволяет отправить запрос об определенном пользователе с помощью инструмента командной строки ldapsearch (подробные сведения приведены в руководстве по OpenLDAP). 
     

    LDAPTLS_CERT={файл_сертификата} LDAPTLS_KEY={файл_ключа} ldapsearch -H ldaps://ldap.google.com:636 -b dc={домен},dc={домен} '(mail={адрес_пользователя})'

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

    {файл_сертификата} – название CRT-файла.
    {файл_ключа} – название KEY-файла.
    {домен} – все части доменного имени, например "dc=example,dc=com" для example.com.
    {адрес_пользователя} – основной адрес электронной почты пользователя в домене.

Как использовать инструмент ldapsearch с программой stunnel

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

ldapsearch -H ldap://{stunnel_host}:{stunnel_port} -b
dc={domain},dc={domain} '(mail={user_email})'

Замените следующие метки-заполнители для stunnel:
{хост_stunnel} – IP-адрес или имя хоста компьютера в вашей сети, на котором запущена программа stunnel.
{порт_stunnel} – порт, на котором запущена программа stunnel (проверьте ее конфигурацию).

Успешное применение команды 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). В противном случае может появиться ошибка следующего характера:

    SASL/EXTERNAL authentication started

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

    Советы
    • При работе с MacOS аутентификация SASL по умолчанию включена. Чтобы ее не использовать, укажите параметр -x.
    • Добавьте в команду ldapsearch параметр -d5 и проверьте выходные данные для следующей строки:

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

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

    Рекомендация. Удалите параметр -x и повторите попытку.

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

    Name (Название): введите название подключения, например Google LDAP.
    Connection Point (Точка подключения): нажмите Select or type a Distinguished Name or Naming Context (Выберите или введите уникальное имя или контекст имени).
    Укажите доменное имя в формате DN. Например, example.com следует записать как dc=example,dc=com.

    Computer (Компьютер): нажмите Select or type a domain or server (Выберите или введите домен или сервер).
    ldap.google.com

    Use SSL-based Encryption (Использовать шифрование на базе SSL): установите флажок.
     
  4. Нажмите Advanced… (Расширенные…) и введите следующие данные:

    Specify credentials (Указать учетные данные): установите флажок.
    Username (Имя пользователя): имя пользователя для доступа из консоли администратора.
    Password (Пароль): пароль для доступа из консоли администратора.
    Port Number (Номер порта): 636.
    Protocol (Протокол): LDAP.
    Simple bind authentication (Аутентификация посредством простой привязки): установите флажок.
     
  5. Нажмите кнопку ОК, а затем снова ОК.
  6. Если подключение установлено, на правой панели появятся данные каталога, указанные в базовом уникальном имени.
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. Выберите Connection (Подключение) > Connect… (Подключиться…).
  14. Введите следующие параметры подключения:

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

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

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

Как выполнить базовое тестирование подключения

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

    В большинстве пакетов 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

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

Verify return code: 18 (self signed certificate)

Сервису Secure LDAP требуется клиент TLS, который поддерживает и инициирует сеансы TLS с помощью SNI. Если клиент 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).

Статьи по теме

Эта информация оказалась полезной?
Как можно улучшить эту статью?