
我嘗試在 Zabbix 2.4 上設定 LDAPS 身份驗證,但它不起作用。這是我的設定資訊:
- 作業系統:Debian
安裝的 PHP 軟體包:
libapache2-mod-php5 php-pear php5 php5-cli php5-common php5-curl php5-gd php5-imagick php5-json php5-ldap php5-mysqlnd php5-pgsql php5-readline php5-sasl zabbix-frontend-php
該命令正在運行:
ldapsearch -H ldaps://ldaps.mptest.be:636 -D cn=reader,dc=antidot,dc=prv -W -b ou=people,dc=antidot,dc=prv
zabbix 上的驗證 LDAP 設定頁面中的相同 URI、OU、登入名稱、密碼,我有:
ldap_bind():無法綁定到伺服器:無法聯繫 LDAP 伺服器
[authentication.php:120 → CLdapAuthValidator->validate() → CLdap->checkPass() → /usr/share/zabbix/include/classes/ldap/CLdap.php:112 中的ldap_bind()] LDAP:無法通過給定綁定綁定DN。登入名稱或密碼不正確!
這是/etc/ldap/ldap.conf的內容:
TLS_REQCERT allow BASE dc=antidot,dc=prv URI ldaps://ldap.mptest.be TLS_CACERTDIR /etc/ssl/mptest/wildcard_mptest_be.ca
(沒有 SSL 的身份驗證,在連接埠 386 上是不可能的)
答案1
這適用於 Ubuntu 14.04。基於 Debian 的系統應該是相同的:
答案2
我透過造訪 Zabbix Web 介面解決了這個問題,然後前往行政->驗證->LDAP並改變LDAP 主機參數從主機名稱(例如ldap.example.com
)到其 IP 位址(例如10.6.10.10
)。
答案3
坦白說,PHP 的 LDAP 純粹是垃圾。前段時間我也曾在 Zabbix 和 LDAPS 上遇到困難。你可以做每件事100%正確,但還是會失敗。所以,不用擔心,這裡的問題不在你這邊。
若要使其正常運作,您必須在 OpenLDAP 中停用 TLS/SSL 憑證驗證。 PHP 的 LDAP 使用 OpenLDAP 函式庫,因此/etc/openldap/ldap.conf
或被~/.ldaprc
載入且很重要。 (可以透過使用範例 PHP LDAP 查詢並使用 執行該查詢來看出這一點strace -e trace=open php example.php
)。這裡的問題似乎位於 OpenLDAP 函式庫的 PHP 使用領域,一些缺失/錯誤/未實現的成功 TLS 憑證驗證的呼叫。解決這個問題需要修補 PHP。
TLS_REQCERT never
應該是實現該操作所需的參數。 ldap.conf 中的 URL 和 OU/DC 設定不應相關,因為它們是從 Zabbix 配置中提供的。我強烈建議修改~/.ldaprc
您的網頁伺服器主目錄中的內容,以免影響任何其他使用 LDAPS 的應用程式。
此解決方案不是一個好的解決方案,但仍然比回退到未加密的 LDAP 更好。為了澄清這一點,我嘗試手動放置 OpenLDAP 的 CACerts,重新產生憑證快取並設定TLS_REQCERT
為always
.使用例如ldapsearch
(使用與 PHP 相同的庫)可以很好地工作,但使用 PHP 的 LDAP 功能仍然失敗。因此,這種嘗試很可能是浪費時間。我沒有嘗試放置客戶端憑證並TLS_KEY/TLS_CERT
按照 @jouflux 的答案中的指示使用。如果可行的話,這將是一個更好的解決方案。