Póngase en contacto con Active Directory con SSL

Tengo un método que valida las credenciales de usuario en Active Directory. Me gustaría usar este método con SSL pero no puedo hacer que funcione.

El principal problema es que tengo un servidor que está fuera de nuestra red (¿se llama DMZ?). Y a partir de ahí quiero contactar mi directorio activo, y es por eso que quiero usar SSL.

Cuando uso esto en mi computadora local (no de DMZ) me sale este error:

System.DirectoryServices.AccountManagement.PrincipalServerDownException: no se pudo contactar con el servidor. ---> System.DirectoryServices.Protocols.LdapException: el servidor LDAP no está disponible.
en System.DirectoryServices.Protocols.LdapConnection.Connect ()
en System.DirectoryServices.Protocols.LdapConnection.SendRequestHelper (solicitud de DirectoryRequest, Int32 y messageID)
en System.DirectoryServices.Protocols.LdapConnection.SendRequest (solicitud de DirectoryRequest, TimeSpan requestTimeout)
en System.DirectoryServices.Protocols.LdapConnection.SendRequest (solicitud de DirectoryRequest)
en System.DirectoryServices.AccountManagement.PrincipalContext.ReadServerConfig (String serverName, ServerProperties & properties)

--- Fin del rastro interno de la pila de excepciones ---
en System.DirectoryServices.AccountManagement.PrincipalContext.ReadServerConfig (String serverName, ServerProperties & properties)
en System.DirectoryServices.AccountManagement.PrincipalContext.DoServerVerifyAndPropRetrieval ()
en System.DirectoryServices.AccountManagement.PrincipalContext..ctor (ContextType contextType, String name, String container, ContextOptions options, String userName, String password)
en System.DirectoryServices.AccountManagement.PrincipalContext..ctor (ContextType contextType, String name, String container, ContextOptions opciones)
en Authorization.AuthorizeAD.ValidateCredentials (String username, String password)

Pensé que sería bueno hacerlo funcionar con SSL desde local antes de probarlo desde nuestro servidor.

Mi metodo:

public bool ValidateCredentials(string username, string password) {
        using (
            var context = new PrincipalContext(ContextType.Domain, ContextName, ContextContainer,
                ContextOptions.Negotiate | ContextOptions.Signing | ContextOptions.Sealing |
                ContextOptions.SecureSocketLayer)) {
            return context.ValidateCredentials(username, password);
        }
    }

Como se dijo antes, sinContextOptions.SecureSocketLayer funciona bien (los otros tres son por defecto si el parámetro es nulo)

¿Alguien sabe cómo debo usar?PrincipalContext correcto con SSL?

Respuestas a la pregunta(1)

Su respuesta a la pregunta