Наконец!
Кажется, что приложение ASP.NET не имеет прав (или не знает, как) проверить хранилище доверенных сертификатов на уровне компьютера. Поскольку сертификат был самозаверяющим, приложение ASP.NET отказалось устанавливать соединение.
Я исправил проблему с помощью пользовательской проверки сертификата.
Следующий код добился цели:
LdapConnection con = new LdapConnection(new LdapDirectoryIdentifier("server", port));
con.SessionOptions.SecureSocketLayer = true;
con.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback(ServerCallback);
con.Credential = new NetworkCredential(String.Empty, String.Empty);
con.AuthType = AuthType.Basic;
con.Bind();
Поскольку я уверен, что сертификат действителен, метод ServerCallBack выглядит следующим образом:
public static bool ServerCallBack(LdapConnection connection, X509Certificate certificate)
{
return true;
}
Но вы всегда можете получить сертификат с локального компьютера и проверить его.
Пространство имен, используемое в этом примере:
System.DirectoryServices.Protocols;
Это потому, что пространство имен:
System.DirectoryServices.DirectoryEntry
не содержит метод для проверки собственного сертификата.
Спасибо всем за помощь и время, и, надеюсь, это поможет кому-то в будущем!