我们完成了撤销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议:
newcert.pem文件 ldd $(which slapd) ,看看你的OpenLDAP是不是链接到“gnutls”,这可能决定了根证书应该进入newcert.pem 有两件事情可以解决这个问题:1)为ldap1服务器创build一个新的密钥/证书对。 2)从最近的** slapcat ** b / u恢复LDAP。