如何续订过期的Ubuntu OpenLDAP SSL证书

我们完成了撤销OpenLDAP服务器使用的SSL证书并进行更新的步骤,但是我们无法启动slapd。

以下是我们使用的命令:

   opensslvalidationhostname_domain_com_cert.pem

我们得到证书已过期,但“确定”

我们撤销了我们一直使用的证书:

   openssl ca -revoke /etc/ssl/certs/hostname_domain_com_cert.pem

撤销工作正常。

我们通过将密钥文件作为input来创build新的证书请求:

   openssl req -new -key hostname_domain_com_key.pem -out newreq.pem

我们使用新创build的请求文件“newreq.pem”生成了一个新的证书

   openssl ca -policy policy_anything -out newcert.pem -infiles newreq.pem

我们查看了我们的cn = config.ldif文件,find了密钥和证书的位置,并将新注册的证书放在所需的path中。

我们仍然无法启动slapd:

  服务slapd启动

我们得到这个消息:

启动OpenLDAP:slapd  - 失败。
操作失败,但没有产生输出。 提示什么去了
错误请参考系统的日志文件(例如/ var / log / syslog)或
尝试在debugging模式下运行守护进程,例如通过“slapd -d 16383”(警告:
这将创造丰富的产出)。

在下面,你可以find这个脚本使用的命令行选项
运行slapd。 不要忘了指定这些选项,如果你
想看看debugging输出:
   slapd -h'ldap:/// ldapi:/// ldaps:///'-g openldap -u openldap -F /etc/ldap/slapd.d/

这是我们在/ var / log / syslog中find的

 10月23日20:18:25 ldap1 slapd [2710]:@(#)$ OpenLDAP:slapd 2.4.21(Dec 19 2011 15:40:04)$#012#011buildd @ allspice:/build/buildd/openldap-2.4 0.21 /于Debian /编译/服务器/ slapd的
 10月23日20:18:25 ldap1 slapd [2710]:主:TLS初始化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(Dec 19 2011 15:40:04)$#012#011buildd @ allspice:/build/buildd/openldap-2.4 0.21 /于Debian /编译/服务器/ slapd的
 Oct 24 08:38:12 ldap1 slapd [5463]:hdb_db_open:数据库“cn = accesslog”无法打开,错误13.从备份恢复!
 Oct 24 08:38:12 ldap1 slapd [5463]:bdb(cn = accesslog):txn_checkpoint接口需要为事务子系统configuration的环境
 Oct 24 08:38:12 ldap1 slapd [5463]:bdb_db_close:database“cn = accesslog”:txn_checkpoint失败:无效参数(22)。
 Oct 24 08:38:12 ldap1 slapd [5463]:backend_startup_one(type = hdb,suffix =“cn = accesslog”):bi_db_open失败!  (13)
 Oct 24 08:38:13 ldap1 slapd [5463]:bdb_db_close:database“cn = accesslog”:alock_close失败
 10月24日08:38:13 ldap1 slapd [5463]:slapd停止。

我们应该尝试从备份中恢复ldap吗?

这里有几种可能性。

新证书是否真正有效并可以根据颁发的CA证书进行validation?

在您的OpenLDAPconfiguration中属性olctlscacertificatefile的值是多less? 在你的情况下,它应该指向你的根CA证书,签名服务器的证书。 然而,适当的值将是/etc/ssl/certs/ca-certificates.crt ,其中所有可信的CA证书是连接的,包括你的。 详情请看这里: http : //manpages.ubuntu.com/manpages/precise/man8/update-ca-certificates.8.html

它也可能表示许可问题。 密钥和证书(和父path)是否可由openldap用户读取? 密钥和证书的path,使AppArmor不抱怨? 检查/var/log/kern.log以获取指示slapd尝试读取AppArmor允许的path之外的文件的消息。

编辑 :根据您更新的问题,似乎与原来没有任何关系,它看起来像你在/var/lib/ldap搞砸了权限,或者你真的设法破坏/var/lib/ldap一个或多个文件/var/lib/ldap 。 我说从备份恢复。

快速的谷歌search在OpenLDAP邮件列表上发现了这个线程 。 有什么与你的问题有关?

有两点build议:

  • 检查openldap用户是否有权读取证书和密钥
  • 将颁发CA证书追加(或预先)到newcert.pem文件
  • 试试ldd $(which slapd) ,看看你的OpenLDAP是不是链接到“gnutls”,这可能决定了根证书应该进入newcert.pem

有两件事情可以解决这个问题:1)为ldap1服务器创build一个新的密钥/证书对。 2)从最近的** slapcat ** b / u恢复LDAP。