Ssl

如何續訂過期的 Ubuntu OpenLDAP SSL 證書

  • October 26, 2012

我們完成了撤銷 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 hostname_domain_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 failed: -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
Oct 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 嗎?

這裡有幾種可能性。

新證書是否真的有效並可針對頒發的 CA 證書進行驗證?

olctlscacertificatefile您的 OpenLDAP 配置中的屬性值是多少?在您的情況下,它應該指向您的根 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. 我說從備份恢復。

一個快速的Google搜尋在 OpenLDAP 郵件列表中找到了這個執行緒。那裡有什麼與你的問題有關的嗎?

有兩個建議:

  • 檢查執行 openldap 的使用者是否具有讀取證書和密鑰的權限
  • 將頒發的 CA 證書附加(或前置)到newcert.pem文件中
  • 嘗試ldd $(which slapd)查看您的 OpenLDAP 是否未連結到“gnutls”,這可能會決定根證書應該進入的順序newcert.pem

引用自:https://serverfault.com/questions/441602