Я пытаюсь заставить OpenLDAP на Lenny работать с StartTLS. У меня есть машина Fedora 13, которую я использую в качестве клиента для тестирования. Пока что клиент Fedora игнорирует директиву 'host' в /etc/ldap.conf, когда я пытаюсь подключиться с помощью ldapsearch. Клиент хочет подключиться к 127.0.0.1:389, даже если я указываю -H ldaps://server.name on при использовании ldapsearch. /etc/ldap.conf на клиентской машине находится в режиме 444.
Но даже когда я пытаюсь подключиться локально из сеанса SSH, я вижу такие ошибки:
ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)
Кто-нибудь, дайте мне ключ-бат, пожалуйста.
Обновление: вы должны использовать ~/.ldaprc для таких настроек, как 'host'. Кроме того, я только что использовал nmap против сервера ldap, и он показал 636 и 389 в открытом состоянии.
Вот что выводится на экран, когда я пытаюсь подключиться,ldapsearch -ZZ –x '(objectclass=*)'+ -d -1
ldap_create ldap_extended_operation_s ldap_extended_operation ldap_send_initial_request ldap_новое_подключение 1 1 0 ldap_int_open_connection ldap_connect_to_host: TCP 192.168.10.41:636 ldap_new_socket: 3 ldap_prepare_socket: 3 ldap_connect_to_host: Попытка 192.168.10.41:636 ldap_pvt_connect: fd: 3 tm: -1 асинхронный: 0 ldap_open_defconn: успешно ldap_send_server_request ber_scanf fmt ({it) ber: ber_dump: buf=0x9bdbdb8 ptr=0x9bdbdb8 end=0x9bdbdd7 len=31 0000: 30 1д 02 01 01 77 18 80 16 31 2д 33 2д 36 2д 31 0....н...1.3.6.1 0010: 2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037 ber_scanf фмт ({) бер: ber_dump: buf=0x9bdbdb8 ptr=0x9bdbdbd end=0x9bdbdd7 len=26 0000: 77 18 80 16 31 2e 33 2e 36 2e 31 2e 34 2e 31 2e с...1.3.6.1.4.1. 0010: 31 34 36 36 2e 32 30 30 33 37 1466.20037 ber_flush2: 31 байт на sd 3 0000: 30 1д 02 01 01 77 18 80 16 31 2д 33 2д 36 2д 31 0....н...1.3.6.1 0010: 2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037 ldap_write: требуется=31, написано=31 0000: 30 1д 02 01 01 77 18 80 16 31 2д 33 2д 36 2д 31 0....н...1.3.6.1 0010: 2e 34 2e 31 2e 31 34 36 36 2e 32 30 30 33 37 .4.1.1466.20037 ldap_result ld 0x9bd3050 msgid 1 wait4msg ld 0x9bd3050 msgid 1 (бесконечный тайм-аут) wait4msg продолжить ld 0x9bd3050 msgid 1 все 1 ** ld 0x9bd3050 Подключения: * хост: 192.168.10.41 порт: 636 (по умолчанию) refcnt: 2 статус: Подключен последний раз использовался: Вс июн 6 12:54:05 2010 ** ld 0x9bd3050 Невыполненные запросы: * msgid 1, origid 1, статус InProgress Невыполненные рекомендации 0, количество родителей 0 ld 0x9bd3050 количество запросов 1 (отказано 0) ** ld 0x9bd3050 Очередь ответов: Пустой ld 0x9bd3050 количество ответов 0 ldap_chkResponseList ld 0x9bd3050 msgid 1 все 1 ldap_chkResponseList возвращает ld 0x9bd3050 NULL ldap_int_select read1msg: ld 0x9bd3050 msgid 1 все 1 ber_get_next ldap_read: требуется=8, получено=0 ber_get_next не удалось. ldap_err2string ldap_start_tls: Невозможно связаться с сервером LDAP (-1)
решение1
По умолчанию клиент проверяет наличие сертификата сервера. Просто добавьте "TLS_REQCERT never" в /etc/openldap/ldap.conf
решение2
Недавно мне удалось заставить SSL работать с SLAPD на Lenny. Хотя я не помню точно, что я сделал, я припоминаю, что это было как-то связано с разницей в шифрах между GNUTLS и OPENSSL. Пакеты SLAPD для Lenny были скомпилированы с использованием GNUTLS. Возможно, это связано сэтот.
решение3
Похоже, что он не может прочитать файл ключа. У вас должен быть ключ без пароля. Добавьте openldap в группу ssl-cert. Создайте группу на ключе ssl-cert и установите разрешения 440. Команду openssl s_client можно использовать для отладки проблем с tls.
решение4
Если у вас есть SSL-сертификат, подписанный промежуточным сертификатом (что не редкость в наши дни), у вас будут проблемы с TLS в slapd под Lenny. Как упоминал sybreon Lenny, slapd связан с GNUTLS, который не поддерживает все необходимые вам опции.
Решение — использовать бэкпорт Lenny slapd. Однако мы обнаружили, что бэкпорт 2.4.17-2.1~bpo50+1 компилируется с libdb4.6, в котором есть ошибка, которая влияет на нас после работы в течение недели.
Так что на данный момент я не рекомендую использовать Lenny для запуска slapd, если вам нужен TLS. Вместо этого обновитесь до squeeze.