我尝试使用 搜索我公司的广告ldapsearch
。但是我总是收到以下错误:
ldap_bind: Strong(er) authentication required (8)
additional info: BindSimple: Transport encryption required.
我尝试了所有可能的组合来使用 LDAPS,但似乎无法通过除默认端口上的 LDAP 之外的任何其他方式连接到服务器。
奇怪的是,我使用 Active Directory Explorer 时没有遇到任何问题。
我认为可能是防火墙配置不正确并阻止了 LDAPS(636)端口,但这并不能解释 Active Directory Explorer 的工作原理......
GitLab 似乎也能很好地连接到它。只是它不会进行身份验证。但这ldapsearch
也是我尝试调试的原因。
这就是我正在使用的命令:
ldapsearch -D "cn=myuser,cn=Users,dc=company,dc=local" -w "<password>" \
-p 389 -h 10.128.1.254 \
-b "cn=Users,dc=company,dc=local"
服务器是正确的,bind_dn(根据 Active Directory Explorer)和相应的密码也是正确的,我尝试使用大写和小写来表示,我尝试了使用 LDAPS(如,,)和标志cn
的所有可能配置,所以我真的没有主意了。-H ldaps://10.128.1.254
-H ldaps://10.128.1.254:389
-H ldaps://10.128.1.254:636
-x
如果相关的话,AD 服务器就是 Synology/DSM 上的 Active Directory 服务器,它是底层的 Linux SAMBA 服务器。
非常感谢您的帮助。
更新:
看起来添加-Y NTLM
可以让我走得更远。
现在我得到:
SASL/NTLM authentication started
ldap_sasl_interactive_bind_s: Invalid credentials (49)
additional info: SASL:[NTLM]: NT_STATUS_OBJECT_NAME_NOT_FOUND
这很奇怪,因为我知道密码是正确的。
更新2:
现在使用-Y GSSAPI
会产生这个什么都没有的错误:
SASL/GSSAPI authentication started
ldap_sasl_interactive_bind_s: Local error (-2)
additional info: SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_0))
更新 3:
参数-ZZ
(-Z
too)以这个错误结尾:
ldap_start_tls: Connect error (-11)
additional info: The TLS connection was non-properly terminated.
答案1
您确定在 Active Directory 部署中配置了 TLS 吗?默认情况下不是。
无论如何使用 LDAPS(默认端口 636):
ldapsearch -H ldaps://10.128.1.254
使用 LDAP 并强制 StartTLS 扩展操作成功(默认端口 389):
ldapsearch -H ldap://10.128.1.254 -ZZ
请注意,OpenLDAP 的客户端工具会执行严格的 TLS 主机名检查。因此,服务器证书必须包含证书的 subjectAltName 或 CN 属性中与 -H 一起使用的 DNS 名称或 IP 地址。
如果您想要将 SASL 与 GSSAPI/Kerberos 一起使用,则必须先获取 Kerberos 票证授予票证kinit
。
答案2
如果你使用 SAMBA 作为 AD,你必须添加
ldap server require strong auth = no
在 smb.conf 中全局尝试
ldapsearch -D "cn=myuser,cn=Users,dc=company,dc=local" -x -w "<password>" \
-h 10.128.1.254 -b "cn=Users,dc=company,dc=local"