我在 Debian/Squeeze 下使用 slapd,并尝试将系统配置为仅允许在端口 389 上使用 STARTTLS 进行 TLS 加密连接。
因此我将 /etc/default/slapd 配置为监听端口 389:
SLAPD_SERVICES="ldap://:389/"
我通过在 /etc/ldap/slap.d/cn=config.ldif 中添加以下条目来生成证书并启用 TLS
olcTLSCertificateFile: /etc/ssl/openldap/ca-cert.pem
olcTLSCertificateKeyFile: /etc/ssl/openldap/ca-key.pem
最后我添加了一个 /etc/ldap/slapd.conf,内容如下:
security tls=256
通过该配置,我可以使用以下方式运行 TLS 加密连接:
ldapsearch -ZZ -H ldap://127.0.0.1:389 -D "cn=admin,dc=example,dc=net" -w "password"
但除此之外,未加密的连接仍然可以使用:
ldapsearch -H ldap://127.0.0.1:389 -D "cn=admin,dc=example,dc=net" -w "password"
从我的角度来看,/etc/ldap/slapd.conf 中的 security 指令似乎根本没有使用。此外,当我尝试将 slapd.conf 转换为 cn=config 配置格式时,我可以清楚地看到,生成的 cn=config 配置文件中不包含 security 指令。
有人知道那里发生了什么以及如何更改配置以禁止未加密的连接吗?
答案1
您已声明所有 tls 连接的强度必须为 256。
您尚未声明有关其他类型连接的任何内容。
也许你想要security minssf=256
?
man slapd.conf
部分sasl-secprops
并security
了解更多信息。
答案2
我发现问题在于,我一直cn=配置-style 配置格式(我已经意识到了这一点),但我认为/etc/ldap/slapd.conf
也会被使用。有了额外的条目olcSecurity: tls=128
,/etc/ldap/slapd.d/cn=config.ldif
一切都按预期工作。