Centos 7 上 OpenLDAP 的 SSL 不起作用

Centos 7 上 OpenLDAP 的 SSL 不起作用

我目前正在尝试使用自签名证书在 Centos 7 上为 OpenLDAP 配置 SSL。LDAP 无需 SSL 即可运行。我执行了以下命令:

生成证书/密钥并更改所有权:

openssl req -new -x509 -nodes -out /etc/openldap/certs/ldap.cert -keyout /etc/openldap/certs/ldap.key -days 730
chown -R ldap:ldap /etc/openldap/certs/ldap*

创建 ldif 文件来发布证书更改:

dn: cn=config
changetype: modify
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.key

dn: cn=config
changetype: modify
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldap.cert

使用发布更改ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif

之后我/etc/sysconfig/slapd像这样更新:

SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"

我重新启动了slapd守护进程并检查 LDAP 是否正在监听端口 636,事实确实如此。

我在客户端安装了软件包openldap-clientsnss-pam-ldapd。我配置了主机,以便可以使用我的 LDAP 用户登录:

authconfig --enableldap --enableldapauth --ldapserver=ldaps://ldap.local --ldapbasedn="dc=ldap,dc=local" --enablemkhomedir --disableldaptls --update

/etc/nslcd.confI中添加了tls_reqcert允许自签名证书。

最后,如果我尝试使用它获取用户信息,则getent passwd user不会返回任何输出。该用户确实存在于 LDAP 目录中。如果我尝试这样做,ldapsearch则会收到以下错误:

ldap_sasl_interactive_bind_s: Can't contact LDAP server (-1)

我现在还不太确定我能做什么来解决这个问题。

任何帮助,将不胜感激。

此致,

马库斯

答案1

问题是 RHEL/CentOS 附带的 OpenLDAP 服务器与 Mozilla 的 libnss 相链接,但您使用的 cert/key 文件仅适用于 OpenSSL lib。libnss 需要“key”文件中的密码和指向 libnss cert/key DB 的 cert 文件。

因为Red Hat 将放弃此软件包openldap 服务器从其分布无论如何,我强烈建议使用 LDAP 工具箱项目编译的与 OpenSSL 链接的 RPM:

LTB 项目——OpenLDAP RPM / Yum 存储库

LTB RPM 将 OpenLDAP 组件与操作系统软件包完全分开安装到 /usr/local/openldap。因此 LTB RPM 不会与其他 OpenLDAP 软件包冲突。

请注意,LTB 构建的 ldapi:// 套接字的默认路径也位于 /usr/local/openldap 下。因此,例如,您应该使用 /usr/local/openldap/bin/ldapmodify,而不是使用 ldapmodify。

请咨询OpenLDAP 软件 2.4 管理员指南了解如何从头开始设置 OpenLDAP 服务器。虽然这似乎比使用 OS 包的现成配置更难,但它可以让您更好地了解 OpenLDAP 配置方法,从而实现更强大的操作。

答案2

勾选/usr/libexec/openldap/create-certdb.sh即可创建/etc/ldap/certs/文件。

这应该会生成正确的文件,据我记得它用作/etc/pki/源。但我对此不是 100% 确定。

相关内容