我们已完成撤销 OpenLDAP 服务器使用的 SSL 证书并更新该证书的步骤,但仍无法启动 slapd。
以下是我们使用的命令:
openssl 验证 hostname_domain_com_cert.pem
我们收到证书已过期的回复,但“OK”
我们撤销了一直使用的证书:
openssl ca -revoke /etc/ssl/certs/hostname_domain_com_cert.pem
撤销工作正常。
我们通过将密钥文件作为输入传递给它来创建了新的证书请求:
openssl req -new -key 主机名_域_com_key.pem -out newreq.pem
我们使用新创建的请求文件“newreq.pem”生成了新证书
openssl ca -policy policy_anything -out newcert.pem -infiles newreq.pem
我们查看了 cn=config.ldif 文件并找到了密钥和证书的位置,并将新日期的证书放在所需的路径中。
我们仍然无法启动 slapd:
服务 slapd 启动
我们收到此消息:
启动 OpenLDAP:slapd – 失败。 操作失败,但没有输出。有关发生了什么的提示 错误,请参阅系统的日志文件(例如/var/log/syslog)或 尝试在调试模式下运行守护进程,例如通过“slapd -d 16383”(警告: 这将产生丰富的输出)。 下面,您可以找到此脚本使用的命令行选项 运行 slapd。如果您 想要查看调试输出: slapd -h'ldap:///ldapi:///ldaps:///'-g openldap-u openldap-F/etc/ldap/slapd.d/
以下是我们在 /var/log/syslog 中发现的内容
10月23日 20:18:25 ldap1 slapd[2710]: @(#) $OpenLDAP: slapd 2.4.21 (2011年12月19日 15:40:04) $#012#011buildd@allspice:/build/buildd/openldap-2.4.21/debian/build/servers/slapd 10月23日 20:18:25 ldap1 slapd[2710]: main: TLS init def ctx 失败: -1 10月23日 20:18:25 ldap1 slapd[2710]: slapd 已停止。 10月23日 20:18:25 ldap1 slapd[2710]: connections_destroy: 没有什么可销毁的。
生成新的 ldap1 密钥/证书对后,我们每次尝试启动 slapd 时都会得到这个
10月24日 08:38:12 ldap1 slapd[5461]: @(#) $OpenLDAP: slapd 2.4.21 (2011年12月19日 15:40:04) $#012#011buildd@allspice:/build/buildd/openldap-2.4.21/debian/build/servers/slapd 10月24日 08:38:12 ldap1 slapd[5463]: hdb_db_open: 无法打开数据库“cn=accesslog”,错误13。从备份恢复! 10 月 24 日 08:38:12 ldap1 slapd[5463]: bdb(cn=accesslog): txn_checkpoint 接口需要为事务子系统配置环境 10月24日 08:38:12 ldap1 slapd[5463]: bdb_db_close: 数据库“cn=accesslog”: txn_checkpoint 失败: 参数无效 (22)。 10月24日 08:38:12 ldap1 slapd[5463]: backend_startup_one (type=hdb, suffix="cn=accesslog"): bi_db_open 失败!(13) 10 月 24 日 08:38:13 ldap1 slapd[5463]: bdb_db_close: 数据库“cn=accesslog”: alock_close 失败 10月24日 08:38:13 ldap1 slapd[5463]: slapd 已停止。
我们应该尝试从备份中恢复 ldap 吗?
答案1
这里有几种可能性。
新的证书是否真的有效并且可以与颁发 CA 证书进行验证?
您的 OpenLDAP 配置中的属性值是什么olctlscacertificatefile
?就您而言,它应该指向您的根 CA 证书,即签署服务器证书的证书。但是,正确的值应该是/etc/ssl/certs/ca-certificates.crt
所有受信任的 CA 证书(包括您的证书)连接在一起的值。有关详细信息,请参见此处:http://manpages.ubuntu.com/manpages/precise/man8/update-ca-certificates.8.html
这也可能表示存在权限问题。密钥和证书(以及父路径)是否可供用户读取openldap
?密钥和证书的路径是否使得 AppArmor 不会发出抱怨?检查是否/var/log/kern.log
有消息表明slapd
尝试读取 AppArmor 允许路径之外的文件。
编辑:根据您更新的问题,这似乎与原始问题无关,看起来您要么搞乱了权限/var/lib/ldap
,要么确实损坏了一个或多个文件/var/lib/ldap
。我说从备份中恢复。
答案2
通过谷歌快速搜索发现此主题在 OpenLDAP 邮件列表上。那里有什么与你的问题相关的吗?
有两条建议:
- 检查运行 openldap 的用户是否有权限读取证书和密钥
- 将颁发 CA 证书附加(或添加)到
newcert.pem
文件 - 尝试
ldd $(which slapd)
查看您的 OpenLDAP 是否未链接到“gnutls”,这可能会决定根证书进入的顺序newcert.pem
答案3
为解决这个问题,可以做两件事...1)为 ldap1 服务器创建一个新的密钥/证书对。2)从最近的 ** slapcat ** b/u 恢复 LDAP。