Ошибка подключения LDAP («Сервер не работает») при подключении к порту 636 - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь подключиться к LDAP через порт 636, но получаю сообщение об ошибке «Сервер не работает», но если я пытаюсь подключиться к порту 389, он подключается нормально и получает данные

Этокод, который я использую

DirectoryEntry entry = new DirectoryEntry("LDAP://ldap.domain.com:636/ou=**,ou=**,dc=**,dc=**", "uid=user,OU=**,OU=**,DC=**,DC=**", "password", AuthenticationTypes.None);

При этом, если я пытаюсь подключиться, я получаю сообщение об ошибке "Сервер не работает"

Но если я изменяю код на этот

DirectoryEntry entry = new DirectoryEntry("LDAP://ldap.domain.com:389/ou=**,ou=**,dc=**,dc=**", "uid=user,OU=**,OU=**,DC=**,DC=**", "password", AuthenticationTypes.None);

Или даже это удалить порт (который, по-моему, использует порт 389)

DirectoryEntry entry = new DirectoryEntry("LDAP://ldap.domain.com/ou=**,ou=**,dc=**,dc=**", "uid=user,OU=**,OU=**,DC=**,DC=**", "password", AuthenticationTypes.None);

Затем он подключается нормально и получает данные.

Может кто-нибудь помочь мне подключить LDAP черезПорт 636, поскольку в среде тестового сервера мне нужно подключиться через 636, невозможно использовать 389.

1 Ответ

0 голосов
/ 04 марта 2019

Для работы LDAP через SSL должны произойти три вещи:

  1. Вам необходимо сетевое подключение (без брандмауэра).Чтобы проверить это, вы можете использовать PowerShell Test-NetConnection:
Test-NetConnection ldap.domain.com -Port 636
Вам нужно доверять сертификату.Если он использует самозаверяющий сертификат, ему нельзя доверять с компьютера, с которого вы его загружаете.Здесь есть некоторый код PowerShell , который может загрузить сертификат, чтобы вы могли его проверить.Я изменил его для использования здесь (просто измените $domain на фактический домен):
$domain = "ldap.domain.com"
$webRequest = [Net.WebRequest]::Create("https://$($domain):636")
try { $webRequest.GetResponse() } catch {}
$cert = $webRequest.ServicePoint.Certificate
$bytes = $cert.Export([Security.Cryptography.X509Certificates.X509ContentType]::Cert)
set-content -value $bytes -encoding byte -path "~\Downloads\$domain.cer"

Это поместит сертификат в вашу папку «Загрузки».Откройте файл .cer, и он сразу скажет вам, доверяет ли он вашему компьютеру.Если нет, то вам потребуется получить корневой сертификат и установить его в качестве доверенного корневого сертификата на любой машине, на которой работает этот код.

Полное доменное имя, которое вы используете для подключения к AD, должно точно соответствовать сертификату SSL (или одному из «альтернативных имен субъекта» сертификата).Иногда сертификат будет выдан на имя контроллера домена (например, dc1.domain.com), и в этом случае вы должны указать этот конкретный контроллер домена ("LDAP://dc1.domain.com:636"), а не только имя домена.
...