2013-07-01 44 views

回答

0

我终于设法测试,如果我使用Wireshark连接安全或不安全。 您可以将过滤器设置为:tcp.port eq 636或tcp.port eq 389 ,这样您将看到通过636和389端口的通信。

我的结论是,即使未在ldp中选中ssl,ldap服务器也会在636端口上使用安全连接,如果设置了端口636,则检查它没有影响。

我认为这个复选框的目的是强制ssl由客户端,所以如果服务器端口不支持ssl,连接将不会建立。

当我使用我的C#代码则默认为端口636,当它不是固定默认为389

的安全连接的方式来使用从代码的安全连接要么设置连接认证键入ssl或在ldap路径中指定ssl端口。

+0

完全取决于如何配置LDAP服务器。你所描述的当然是正常的状态,但你通过端口389忽略了STARTTLS,这是安全的。 – EJP

+0

现在,我正在经历这些练习,只需输入'ldap',因为WireShark过滤器可以为您提供所需的实际LDAP流量。当SASL正在使用时,您可以判断它是否提供完整性保护(SASL GSS-API Integrity)和/或隐私保护(SASL GSS-API Privacy)。但是,这两者[不一样](http://security.stackexchange.com/q/123478/21509)。 – rdev5

0

端口号码与它无关。 389是非安全LDAP连接的标准定义端口,636是安全连接的标准定义端口。大多数服务器可以配置为将任何端口用作安全端口,并将任何其他端口用作非安全端口。 389和636仅仅是基于标准的默认值。服务器可以配置为使用636作为非安全端口,使用389作为安全端口 - 虽然这可能是违反标准的反直觉配置。此外,使用StartTLS可以将389上的连接提升为安全连接,因此389也可以是安全的。

+0

我知道端口可以设置不同。我的答案是基于默认设置。如果设置了不同的设置,则应在相应的答案中更改它们。但谢谢澄清。 顺便说一句,我仍然没有测试过一个案件,当试图从安全的代码连接,但服务器端口设置为不同于636端口。我假设在这种情况下,连接将失败,你我将不得不手动设置端口。 –

+0

根DSE可以提供属性以告知客户端有关LDAP服务器正在使用的安全性和安全端口。例如,IBM的Tivoli Directory Server提供了以下属性,可以帮助LDAP客户端,找出安全端口: secureport:636 安全:ssltls 端口:389 当然,并不是所有的LDAP供应商提供的信息根DSE,即使他们这样做,你仍然必须知道非安全端口来检索根DSE。 – Bora

+0

我确认在.net代码中的DirectoryEntry对象中设置AuthenticationTypes.SecureSocketsLayer,而不指定ldap路径中的端口会导致连接使用端口636,所以如果在ldap服务器中为ldaps设置了不同的端口,在ldap路径中指定。如果连接不安全,没有指定端口,.net将尝试连接端口389。 –