openldap olcTLS* 设置失败,ldap_modify:其他(例如,特定于实现)错误(80)

openldap olcTLS* 设置失败,ldap_modify:其他(例如,特定于实现)错误(80)

我有几个运行带 TLS 的 openldap 的 Ubuntu Bionic 平台,这些平台多年来一直运行良好(现在仍然如此)。但是,我最近添加了一个新服务器,使用与所有其他服务器相同的安装脚本,似乎 olcTLS* 设置现在都被拒绝了。

为了再次检查,我尝试将相同的脚本重新应用到其中一台正在运行的服务器上,并且它没有出现错误。然后我重新初始化了服务器的 ldap 实例,然后正在运行的服务器出现故障。因此,这似乎是在过去一年左右的某个时间点使用 apt-get 全新安装 openldap 时应用的默认设置发生了变化。

示例脚本片段:

cat << EOF >/etc/config.ldif
dn: cn=config
changetype: modify
replace: olcTLSProtocolMin
olcTLSProtocolMin: 3.3
EOF

ldapmodify -v -Y EXTERNAL -f /etc/config.ldif

按预期运行的现有服务的示例输出:

ldap_initialize( <DEFAULT> )
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
replace olcTLSProtocolMin:
        3.3
modifying entry "cn=config"
modify complete

不起作用的 fresh-build 输出示例:

ldap_initialize( <DEFAULT> )
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
replace olcTLSProtocolMin:
        3.3
modifying entry "cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)

我搜索了支持论坛,没有找到任何人遇到类似问题的例子(有些人遇到产生相同错误的证书/密钥问题,但正如我已经提到的,此配置在现有服务器上运行良好),这有点令人困惑。

有什么想法吗?

答案1

最后终于解决了这个问题(我以为我已经排列了所有的设置组合,但显然没有)。

所以情况是,一些 olcTLS* 设置需要其他设置首先存在才能成功设置。

在设置协议、密码等之前,需要首先进行各种证书设置。

导致我的脚本崩溃的原因是,在过去几个月的某个时候,所使用的密码集字符串已不再被接受。目前还不清楚原因(正如我提到的,它在其他服务器上运行良好)。

答案2

实现特定错误 (80) 似乎有许多可能的原因,例如权限、所有权和相应生成的证书文件。但当我放弃时,添加属性的顺序真的让我很开心。最终对我有用的一个:

root@ldap:~# cat add7.ldif
dn: cn=config
changetype: modify
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/certs/privkey1.pem

root@ldap:~# cat add8.ldif
dn: cn=config
changetype: modify
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/certs/cert1.pem

root@ldap:~# cat add6.ldif
dn: cn=config
changetype: modify
replace: olcTLSCRLCheck
olcTLSCRLCheck: none

root@ldap:~# cat add5.ldap
dn: cn=config
changetype: modify
add: olcTLSCipherSuite
olcTLSCipherSuite: NORMAL
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/certs/fullchain1.pem

root@ldap:~# cat add2.ldap
dn: cn=config
changetype: modify
add: olcTLSProtocolMin
olcTLSProtocolMin: 3.3

root@ldap:~# cat add1.ldap
dn: cn=config
changetype: modify
replace: olcTLSVerifyClient
olcTLSVerifyClient: never
root@ldap:~#

To read in:
ldapmodify -Y EXTERNAL -H ldapi:/// -f add1.ldap

To check:
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config | grep olcTLS

相关内容