LdapConnection端口636连接时没有SSL

时间:2016-05-03 03:19:51

标签: ssl active-directory ldap ldapconnection

我已在虚拟机中设置了Active Directory服务器,并根据以下链接启用了LDAP over SSL: https://support.microsoft.com/en-us/kb/321051

我使用ldp.exe来测试我的设置,并且能够连接到端口636并使用" SSL"选中复选框。然后我取消选中" SSL"复选框并再次尝试连接到端口636。我预计连接会失败,因为端口636是为LDAP over SSL保留的。然而,令我惊讶的是,连接仍然存在。我很困惑。我可以使用端口636但没有SSL连接到Active Directory是正常的吗?

public static LdapConnection CreateLdapConnection(string server, int port, bool IsSSL, string userDN, string password, out string err)
{
    err = null;
    LdapConnection con = new LdapConnection(new LdapDirectoryIdentifier(server, port));

    if (IsSSL)
    {
        con.SessionOptions.SecureSocketLayer = true;
        con.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback(ServerCallback);
    }
    con.Credential = new NetworkCredential(userDN, password);
    con.AuthType = AuthType.Basic;

    try
    {
        con.Bind();
    }
    catch (Exception ex)
    {
        if (ex.Message.Contains("The supplied credential is invalid"))
        {
            err = "Invalid ldap user password";
        }
        else if (ex.Message.Contains("The LDAP server is unavailable"))
        {
            err = "Invalid server address or port number";
        }
        else
        {
            err = ex.Message;
        }
    }

    return con;
}

我还使用上面的代码在我的应用程序中测试ldap连接,并且当IsSSL变量为false时它能够连接。

1 个答案:

答案 0 :(得分:0)

可能使用StartTLS协议,以明文形式连接,然后客户端发出StartTLS,然后双方升级到SSL。