У меня есть контроллер домена с Active Directory (AD). Я хочу включить LDAPS в этом AD, чтобы иметь доступ к AD через безопасное соединение. Я следовал следующему руководству: http://social.technet.microsoft.com/wiki/contents/articles/2980.ldap-over-ssl-ldaps-certificate.aspx
Я сделал все в разделах «Публикация сертификата, поддерживающего проверку подлинности сервера» и «Экспорт сертификата LDAPS и импорт для использования с AD DS». Когда я пытаюсь выполнить netstat, я вижу, что порт 636 открыт, но его IP-адрес - 0.0.0.0, что якобы означает, что к нему нельзя получить доступ извне. Простой LDAP работает, и я могу подключиться к нему и увидеть его в netstat как открытый как для 0.0.0.0, так и для IP-адреса моего контроллера домена, но я не могу получить доступ к контроллеру домена через LDAPS.
В чем проблема? Я пропустил какой-то шаг в этом руководстве? Что мне нужно сделать дополнительно? Я протестировал соединение LDAP и LDAPS с помощью инструмента администрирования Active Directory.
Это результат, который я получаю от LDP.EXE:
ld = ldap_sslinit("10.165.0.10", 636, 1);
Error 81 = ldap_set_option(hLdap, LDAP_OPT_PROTOCOL_VERSION, 3);
Error 81 = ldap_connect(hLdap, NULL);
Server error: <empty>
Error <0x51>: Fail to connect to 10.165.0.10.
Проблема заключалась в том, что я использовал IP-адрес при попытке подключения, а сертификат был выдан для DNS-имени. Теперь это работает.
Наша компания работала над этим 2 недели. Я прочитал сотни статей по этому поводу. В конце концов, это было несоответствие имени сертификата. Единственное, что обнаружило наше приложение, - это ошибка 81. Худшая часть LDP.exe успешно прошла аутентификацию. Даже наши веб-службы будут правильно аутентифицироваться, но наше приложение, как только оно получит ACK RST от сервера ldap, сразу выдаст ошибку 81. Мы использовали файлы хоста на сервере Windows, чтобы сопоставить IP-адрес с ожидаемым DNS, и оно начало работать.