无法为 OpenLDAP 配置 TLS 选项

无法为 OpenLDAP 配置 TLS 选项

我正在为新的 OpenLDAP 服务器设置 TLS。系统是 Debian Jessie(已更新至最新的 8.7 稳定版),我已通过安装软件包设置了服务器slapd,到目前为止几乎没有任何修改。

我正在尝试配置的其中一项是 TLS 密码套件。以下是 LDIF:

dn: cn=config
changetype: modify
add: olcTLSCipherSuite
olcTLSCipherSuite: HIGH

当我尝试使用以下命令提交此更改时:

ldapmodify -Y EXTERNAL -H ldapi:/// -f set-cipher-suite.ldif

我收到此错误:

ldap_modify: Server is unwilling to perform (53)

我还尝试使用以下 LDIF 设置证书文件:

dn: cn=config
changetype: modify
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/foo.crt

这里我收到错误 80,而不是错误 53。

ldap_modify: Other (e.g., implementation specific) error (80)

我仔细检查了该文件是否存在以及是否slapd有人有权访问该文件。

我改为olcLogLevelany从而证明我有能力修改配置)并检查了调试输出,但我看到的内容对我这个外行人来说没有任何信息价值。以下是发生错误 53 的代码片段:

[...]
6月8日 16:46:21 pelargir slapd[36937]: slap_queue_csn: 排队 0x7f3648f4a430 20160608144621.742848Z#000000#000#000000
6月8日 16:46:21 pelargir slapd[36937]: oc_check_required 条目 (cn=config),objectClass“olcGlobal”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“objectClass”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“cn”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“olcArgsFile”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“olcLogLevel”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“olcPasswordHash”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“olcPidFile”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“olcToolThreads”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“structuralObjectClass”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“entryUUID”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“creatorsName”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“createTimestamp”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“olcTLSCipherSuite”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“entryCSN”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“modifiersName”
6月8日 16:46:21 pelargir slapd[36937]: oc_check_allowed 类型“modifyTimestamp”
6月8日 16:46:21 pelargir slapd[36937]: send_ldap_result: conn=1002 op=1 p=3
6月8日 16:46:21 pelargir slapd[36937]: send_ldap_result: err=53 匹配=“” text=“”
6月8日 16:46:21 pelargir slapd[36937]: send_ldap_response: msgid=2 tag=103 err=53
6月8日 16:46:21 pelargir slapd[36937]: conn=1002 op=1 RESULT tag=103 err=53 text=
[...]

有人能提示我这里可能做错了什么吗?令我感到非常困惑的是,我可以成功修改简单选项(例如olcLogLevelolcPasswordHash),但当我尝试对类似简单的 TLS 选项(例如 )执行相同操作时却失败了olcTLSCipherSuite

答案1

我遇到了同样的问题,debian 中的 openldap 是针对 gnu-tls 包进行编译的,但默认情况下并未安装。

这可能会有帮助:

apt install gnutls-bin

还要确保 openldap 用户具有足够的权限来读取证书。例如:

useradd letsencrypt
chown openldap:letsencrypt /etc/letsencrypt/ -R
usermod -a -G letsencrypt openldap

答案2

问题

olcTLSCipherSuite: HIGH

是 GnuTLS 不认识“HIGH”密码套件,因为这是仅由 OpenSSL 支持的方便名称。如果您想查看 GnuTLS 支持的可用密码名称,请运行命令gnutls-cli -l。安装gnutls-binDebian 软件包以访问该gnutls-cli实用程序。

问题

olcTLSCertificateFile: /etc/ssl/certs/foo.crt

三年多后我还是无法重现这个问题。正如 Alexander Kjäll 在他的回答中指出的那样,这毕竟可能是权限问题。

相关内容