SLAPD 無法打開 TLS 證書
我正在嘗試為 SLAPD 配置 TLS,但它一直失敗並出現錯誤“TLS init def ctx failed”。我能夠將錯誤跟踪到守護程序嘗試打開 CA 證書文件 (
open("/etc/ssl/certs/ca.crt", O_RDONLY) = -1 EACCES
) 的系統呼叫。它打開帶有 O_RDONLY 標誌的 CRT 文件並獲取 EACCES 作為響應。但是,文件本身是世界可讀的。此外,我執行sudo -u openldap cat /etc/ssl/certs/ca.crt
並且文件輸出很好(openldap 確實是守護程序的使用者和組)。有什麼建議嗎?編輯:
文件的權限是 644 歸 root:root 擁有,所有父目錄的權限是 755 歸 root:root 擁有。我嘗試將所有者/組更改為openldap,還嘗試將權限更改為777。還嘗試將文件移動到/,但都沒有運氣。還嘗試以 root 身份執行,即不帶 -u 和 -g 選項執行,但仍然失敗。
strace 輸出的最後幾行:http: //paste.ubuntu.com/1147299/
AppArmor可能拒絕訪問該文件,請檢查
/var/log/kern.log
以確認:grep audit /var/log/kern.log
如果是這種情況,請編輯
/etc/apparmor.d/usr.sbin.slapd
並授予它對該文件的權限。/etc/ssl/certs/ r, /etc/ssl/certs/* r,
sudo service apparmor reload
修改配置文件後執行。
這聞起來很像 SELinux 或其他一些安全模組。是否啟用了 selinux?您可以查看
/var/log/audit/audit.log
表明 selinux 已阻止操作的消息。您還可以嘗試通過執行以下命令禁用 selinux:# setenforce 0
現在啟動
slapd
。如果它有效,這就是你的問題,有兩種方法可以解決它:
- 永久禁用 selinux。究竟如何做到這一點取決於您的發行版。
- 創建一個允許 slapd 從證書中讀取的 selinux 策略。
您可以使用該
audit2allow
程序生成適當的 selinux 策略。如果您有 AppArmor 而不是 SElinux,請參閱 mgorven 的答案。