На моей машине разработки мне пришлось установить AD-LDS. В принципе он работает нормально, однако первое подключение к AD-LDS через класс PrincipalContext происходит очень медленно (более 30 секунд). Мне кажется, что он сначала пытается подключиться к какому-то несуществующему хосту или каталогу, а затем по истечении тайм-аута (30 секунд) подключается к моему AD-LDS и делает то, что должен.
Такое же поведение я наблюдаю при подключении с помощью LDP.exe и SSL. Однако при использовании ADSI-Edit подключение через SSL происходит сверхбыстро. Так же как и соединения без SSL.
Я посмотрел, вижу ли я что-нибудь в fiddler, но ничего не нашел. Также в журнале событий ничего не могу найти. Может быть, это как-то связано с поиском сертификата? Он самоподписан с помощью makecert.
Обновление
Тем временем я заметил одну маленькую вещь, которая, возможно, дает подсказку: в системном журнале событий при первом установлении SSL-соединения с AD-LDS следующее появляется сообщение:
Время ожидания разрешения имени _ldap._tcp.[machineName
] истекло после того, как ни один из настроенных DNS-серверов не ответил
Однако сообщение регистрируется только один раз, но каждое подключение к серверу занимает более 30 секунд. Я также пытался внести соответствующие записи в файл hosts, но ничего не изменилось.
Дополнительная информация
Вероятно, это не проблема с сертификатами, но, возможно, это помогает решить проблему. Поэтому вот как я создал сертификаты (более или менее грузовой код):
RootAuthority
makecert -pe -n "CN=MyDevRootAuthority" -ss my -sr LocalMachine -a sha1 -sky signature -r "MyDevRootAuthority.cer"
Сертификат сервера
makecert -pe -n "CN=[MyComputerName]" -ss my -sr LocalMachine -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -in "MyDevRootAuthority" -is MY -ir LocalMachine -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 "MyTestCertificate.cer"
После создания я переместил корневые полномочия в доверенные органы и предоставил необходимые разрешения.