1

次のリンクに従って、仮想マシンに Active Directory サーバーをセットアップし、LDAP over SSL を有効にしました: https://support.microsoft.com/en-us/kb/321051

ldp.exe を使用して設定をテストしたところ、ポート 636 に接続でき、「SSL」チェックボックスがオンになっていました。次に、「SSL」チェックボックスのチェックを外し、ポート 636 への接続を再試行しました。ポート 636 は LDAP over SSL 用に予約されているため、接続が失敗すると予想していました。しかし、驚いたことに、接続はまだ続いていました。私は困惑しています。SSL なしでポート 636 を使用して 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 の場合に接続できました。

4

1 に答える 1

0

おそらく、接続がプレーンテキストで開始され、クライアントが StartTLS を発行し、両側で SSL にアップグレードする StartTLS プロトコルを使用している可能性があります。

于 2016-05-03T04:17:23.750 に答える