使用 TLS=required 配置 OpenLDAP

Hal*_*aar 16 openldap ldap tls

如今,OpenLDAP的需要与的ldapmodify CN =配置来配置,如描述在这里。但是我找不到您如何将其配置为接受 TLS 流量的方法。我刚刚确认我们的服务器接受未加密的流量(使用 ldapsearch 和 tcpdump)。

通常,我只会关闭带有 IP 表的非 SSL 端口,但显然不推荐使用 SSL 端口,所以我没有那个选项。

因此,使用 SSL 配置命令,如下所示:

dn: cn=config
changetype:modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/bla.key
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/bla.crt
-
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/ca.pem
Run Code Online (Sandbox Code Playgroud)

是否有强制 TLS 的参数?

编辑:我尝试了 olcTLSCipherSuite,但它不起作用。调试输出:

TLS: could not set cipher list TLSv1+RSA:!NULL.
main: TLS init def ctx failed: -1
slapd destroy: freeing system resources.
slapd stopped.
connections_destroy: nothing to destroy.
Run Code Online (Sandbox Code Playgroud)

Edit2(几乎固定):我能够通过加载来修复它:

# cat force-ssl.tx 
dn: cn=config
changetype:  modify
add: olcSecurity
olcSecurity: tls=1
Run Code Online (Sandbox Code Playgroud)

但是然后命令像

ldapmodify -v -Y EXTERNAL -H ldapi:/// -f /etc/ssl/tls-required.ldif
Run Code Online (Sandbox Code Playgroud)

不再工作......并将其更改为:

ldapmodify -v -x -D "cn=admin,dc=domain,dc=com" -H ldap://ldap.bla.tld/ -ZZ -W -f force-ssl.txt
Run Code Online (Sandbox Code Playgroud)

给我“ldap_bind:无效凭据(49)”。显然,即使这个 binddn 被指定为 rootdn,我也不能用它来改变cn=config. 那可以改变吗?

Hal*_*aar 16

我似乎已经明白了:

我这样做了:

dn: olcDatabase={1}hdb,cn=config
changetype:  modify
add: olcSecurity
olcSecurity: tls=1
Run Code Online (Sandbox Code Playgroud)

这似乎达到了预期的效果。我仍然可以运行如下命令:

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config
Run Code Online (Sandbox Code Playgroud)

但是尝试在ldapsearch -xLLL -b ...没有 SSL 的情况下与“ ”绑定说:“需要 TLS 机密性”

  • +1 它似乎很好用。不幸的是,如果客户端尝试在没有 STARTTLS 的情况下进行身份验证,它会以明文形式发送密码,然后服务器以“需要 TLS 机密性”消息进行响应。 (2认同)