如何續訂過期的 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 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