Linux

SLAPD 無法打開 TLS 證書

  • August 14, 2012

我正在嘗試為 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 的答案。

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