我有一个 AD 环境,在 ldapsearch 中,我能够使用 DNS 中的 SRV 记录来解析域和站点中的 LDAP 服务器。
这适用于 389 上的常用 ldap 端口,具有基本身份验证和 STARTTLS。
但是,一些可怕的客户端不会执行 STARTTLS,或者供应商无法提供配置它的方法。[1] 所以我们需要在 636 上为 LDAPS 提供一个选项。
原则上,我相信创建 ldaps SRV 记录和使用ldaps:///
URI 应该可以工作。我在域区域中创建了 2 个 ldaps SRV 记录(有 3 个 ldap 主机),但是当我这样做ldapsearch
并指定时ldaps:///
,它发现的只是 ldap 主机。
这是ldapsearch
命令 - 它在端口389上返回三个带有 _ldap SRV 的 DC
$ ldapsearch -v -H "ldaps:///dc%3Devl%2Cdc%3Dexample%2Cdc%3Dcom" -D "user" -W -b "DC=evl,DC=example,DC=com" -b "" -s base "(objectclass=*)" -d 1
ldap_url_parse_ext(ldaps:///dc%3Devl%2Cdc%3Dexample%2Cdc%3Dcom)
ldap_initialize( ldaps://EVLADC002vs.evl.example.com:389 ldaps://EVLADC001vs.evl.example.com:389 ldaps://EVLADC006vs.evl.example.com:389 )
ldap_create
ldap_url_parse_ext(ldaps://EVLADC006vs.evl.example.com:389)
ldap_url_parse_ext(ldaps://EVLADC001vs.evl.example.com:389)
ldap_url_parse_ext(ldaps://EVLADC002vs.evl.example.com:389)
但是,客户端机器可以解析_ldaps的两个SRV,端口为636
$ dig -t SRV _ldaps._tcp.evl.example.com +short
0 100 636 EVLADC002vs.evl.example.com.
0 100 636 EVLADC001vs.evl.example.com.
这是用于比较的 LDAP SRV
$ dig -t SRV _ldap._tcp.evl.example.com +short
0 100 389 EVLADC001vs.evl.example.com.
0 100 389 EVLADC006vs.evl.example.com.
0 100 389 EVLADC002vs.evl.example.com.
如果我在 ldaps 上查询特定服务器,一切都很好
$ ldapsearch -H ldaps://evladc001vs.evl.example.com -D "user" -W -b "" -s base "(objectclass=*)"
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: ALL
#
#
dn:
currentTime: 20200213045340.0Z
subschemaSubentry: CN=Aggregate,CN=Schema,CN=Configuration,DC=evl,DC=example,DC=com
dsServiceName: CN=NTDS Settings,CN=EVLADC001VS,CN=Servers,CN=Server,CN=Sites,CN=Configuration,DC=evl,DC=example,DC=com
...
对于我是否缺少某些选项或其他明显的问题,我将不胜感激。
[1]:请不要从使用不同产品的讲座开始。大企业无论如何都有集成问题 - 尝试告诉医院系统购买不同的价值数百万美元的软件以满足他们的特定需求