如何更新已过期的 Ubuntu OpenLDAP SSL 证书

如何更新已过期的 Ubuntu OpenLDAP SSL 证书

我们已完成撤销 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。

相关内容