ldap_modify:其他(例如,特定于实现的)错误 (80)

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

我按照 RHEL7: Configure a LDAP directory service for user connection 在 CentOS Linux 版本 7 上配置 openldap。

首先,我创建 /etc/openldap/changes.ldif 文件并粘贴内容,当然要用之前创建的密码替换密码。

然后我使用命令

将新配置发送到 slapd 服务器
# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/changes.ldif

执行此操作后,出现以下错误:

# ldapmodify -Y EXTERNAL -H ldapi:/// -f /etc/openldap/changes.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "cn=config"
ldap_modify: Other (e.g., implementation specific) error (80)

所有文件对于用户 slapd 都是可读的 运行 as。 那里出了什么问题?我找不到任何有用的东西来喂养 SEARCHENGINE。

我一直在寻找解决方案,但目前我只找到了两个人

有同样的问题,问同样的问题,但没有答案。

在我的具体案例中,我遇到了这个错误,我花了 在网上搜索答案。结果在我的案例中 顺序很重要。正确的顺序是:

  1. olcTLSCACertificateFile,
  2. olcTLSCertificateKeyFile,
  3. olcTLSCertificateFile.

在我的文件中的属性顺序是上面那个之前,我遇到了可怕且无用的“ldap_modify:其他(例如,特定于实现的)错误 (80)”消息。

我尝试使用 sudo -u ldap nano <path to each file> 检测权限错误。每个文件都很好。

nano 显示文件是 DOS 格式:我将它们转换为具有 Linux 行结尾,但无济于事。

在我阅读的所有内容中,都存在关于证书文件是否采用正确的 PEM 格式的问题。我无法检查,也许这也是导致此错误的原因。

唯一有用的是注释掉文件中的一些行,直到我看到 运行 ldapsearch -H ldapi:// -Y EXTERNAL -b "cn=config" -LLL -Q -s base.

之后的变化

另请注意,我将文件中的更改“压缩”为单个更改。我对“压缩”的意思是,我没有进行三个更改,而只有一个:而不是这个(我使用的是 Ansible,所以这实际上是一个 Jinja2 模板)

dn: cn=config
changetype: modify
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: {{ cert_parentdir_ca_chain }}/{{ cert_filename_ca_chain }}

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: {{ cert_parentdir_wildcard_cert }}/{{ cert_filename_wildcard_cert }}

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: {{ ldap_cert_parentdir_key }}/{{ cert_filename_key }}

我有这个

dn: cn=config
changetype: modify
replace: olcTLSCACertificateFile
olcTLSCACertificateFile: {{ cert_parentdir_ca_chain }}/{{ cert_filename_ca_chain }}
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: {{ ldap_cert_parentdir_key }}/{{ cert_filename_key }}
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: {{ cert_parentdir_wildcard_cert }}/{{ cert_filename_wildcard_cert }}

HTH.