Как заставить ldapsearch работать на SLES поверх tls, используя сертификат?

12

Нам нужно подключить наш php-скрипт к LDAP через tls с помощью сертификата. Соединение LDAP работает хорошо без TLS. Подробнее здесь /programming/15260252/how-to-use-multiple-tls-certificates-for-ldap-from-php-zend

Нам удалось подключиться через tls из Windows, используя Softerra LDAP Browser. Он попросил нас установить сертификат и доверяем ли мы ему.

Мой конечный результат - возможность аутентификации с помощью LDAP с использованием TLS из php. Мне дали сертификат типа .cer. Это происходит с компьютера с Windows Exchange. Из того, что я вижу, SLES поддерживает сертификаты .pem. Итак, мой вопрос ...

Q1: Нужно ли мне сначала конвертировать из .cer в .pem, прежде чем я смогу установить сертификат на клиенте (который является сервером SLES), и, наконец, Q2: каков наилучший способ установить этот сертификат на сервере, чтобы мое php-приложение могло доступ к нему и делать свою работу . Обратите внимание, что на сервере SLES нам нужно подключаться к различным серверам LDAP.

В настоящее время, если мы бежим

ldapsearch -H ldaps://localhost:9215 -W

мы получаем

Enter LDAP Password: 
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
additional info: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed (unable to get local issuer certificate)

Я нашел много полезной информации здесь http://www.php.net/manual/de/function.ldap-connect.php#36156, и особенно это предложение важно в моих глазахOnce you've gotten the ldapsearch tool working correctly PHP should work also.


  • SUSE Linux Enterprise Server 11 (x86_64)
  • ldapsearch: @ (#) $ OpenLDAP: ldapsearch 2.4.26 (26 сентября 2012 13:14:42) $ abuild @ baur: /usr/src/packages/BUILD/openldap-2.4.26/clients/tools (библиотека LDAP: OpenLDAP 20426)
Радек
источник
Альтернативный способ отладки - игнорировать часть LDAP и просто посмотреть на SSL: вы можете запустить "openssl s_client -connect localhost: 9215", чтобы выдать сертификат, который использует сервер, и результаты проверки.
Kowh
OK. Я передам это разработчику. Я все еще лично не понимаю, как я устанавливаю сертификат, и это связано с сервером, когда я хочу получить к нему доступ.
Радек

Ответы:

25

Это означает, что срок действия сертификата на сервере истек или он недействителен.

Что касается обходного пути, используйте LDAPTLS_REQCERTпеременную для игнорирования сертификата, например:

LDAPTLS_REQCERT=never ldapsearch -D "cn=drupal-test,ou=Services,dc=example,dc=com" -w my_pass -h ldap.example.com -b "ou=People,dc=example,dc=com" -s sub -x -ZZ "(uid=admin)"

В противном случае вы можете импортировать сертификат и пометить его как доверенный.

kenorb
источник
Работает и на Cygwin, где не было существующего ldap.confфайла для установки TLS_REQCERTпараметра.
19
8

Я не уверен насчет преобразования pem в cer, но чтобы ldapsearch использовал сертификаты без ldap.conf или без разрешений для изменения глобальных сертификатов, вы должны сделать это:

env LDAPTLS_CACERT=/path/to/cert ldapsearch
Дзынь
источник
1

С помощью

LDAPTLS_REQCERT=never

удаляет проверку сертификата сервера LDAP. Это аннулирует безопасность, обеспечиваемую TLS в первую очередь. Не делай этого. Вы должны исправить сертификаты, если есть проблема, и затем предоставить клиенту LDAP центр сертификации, как описано tink.

returntosender404
источник