我目前正在尝试使用自签名证书在 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-clients
和nss-pam-ldapd
。我配置了主机,以便可以使用我的 LDAP 用户登录:
authconfig --enableldap --enableldapauth --ldapserver=ldaps://ldap.local --ldapbasedn="dc=ldap,dc=local" --enablemkhomedir --disableldaptls --update
在/etc/nslcd.conf
I中添加了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% 确定。