2012-05-16 27 views
0

我正在RHEL 5.6(x86_64)上建立一個新的LAMP服務器,使用Apache/2.2.22( Unix)mod_ssl/2.2.22 OpenSSL/0.9.8w和PHP/5.3.13。 (我也試過用PHP 5.3.11。)php 5.3.x ldap_bind()失敗ldaps://使用自簽名證書

問題是我無法綁定到使用自簽名證書的SSL LDAP服務器。

TLS certificate verification: Error, self signed certificate in certificate chain 

我讀過的每處都提到將ldap.conf修改爲「TLS_REQCERT永不」,但這不起作用。 (這也不會是因爲變化是由一些企業的子系統覆蓋一個永久的解決方案)

我也試圖把這個在PHP代碼:

putenv('LDAPTLS_REQCERT=never'); 

其中也沒有工作。

三點注意事項:

1)相同的代碼以類似的服務器設置工作正常,但使用PHP 5.2.x是,也沒有改變在ldap.conf文件。 //連接,並只使用LDAP://,它的工作原理沒有問題

2)當通過CLI,而不是通過Apache運行相同的PHP腳本中,如果我刪除LDAPS正常工作

3)。

我不明白爲什麼對ldap.conf所做的更改無法正常工作,以及爲什麼CLI可以工作,即使ldap.conf未被修改。

編輯:

我不再覺得證書檢查這個問題,但我還是努力讓LDAPS:// Apache的運行時的工作。

下面是從CLI運行時的調試:

TLS certificate verification: Error, self signed certificate in certificate chain 
TLS trace: SSL_connect:SSLv3 read server certificate A 
TLS trace: SSL_connect:SSLv3 read server done A 
TLS trace: SSL_connect:SSLv3 write client key exchange A 
TLS trace: SSL_connect:SSLv3 write change cipher spec A 
TLS trace: SSL_connect:SSLv3 write finished A 
TLS trace: SSL_connect:SSLv3 flush data 
TLS trace: SSL_connect:SSLv3 read finished A 
ldap_open_defconn: successful 
ldap_send_server_request 

這裏是相同的,當Apache下運行:所以

TLS certificate verification: Error, self signed certificate in certificate chain 
TLS trace: SSL_connect:SSLv3 read server certificate A 
TLS trace: SSL_connect:SSLv3 read server done A 
TLS trace: SSL_connect:SSLv3 write client key exchange A 
TLS trace: SSL_connect:error in SSLv3 write finished A 
TLS trace: SSL_connect:error in SSLv3 write finished A 
TLS: can't connect. 

,似乎在任何情況下,證書錯誤,這些錯誤沒問題,但是當作爲Web模塊運行時,我得到TLS:無法連接而不能成功連接。

phpinfo()和php -i與OpenSSL和LDAP選項相同。

+0

強制性:沒有驗證證書的SSL比沒有SSL更安全0%。 – hobbs

+3

這是在內部的公司網絡上,所以我不關心證書的有效性。通過SSL的LDAP意味着流量本身被加密,這是我的最終目標,因爲這是用於身份驗證並提供密碼的。 – Randy

+0

可以從非SSL連接窺探密碼的人可以使用MITM,然後從SSL連接中窺探密碼,除非您確認證書實際上屬於合法服務器,否則您永遠不會知道。 – hobbs

回答

0

我終於能夠解決這個問題。不幸的是,這更多的是用戶錯誤的一個奇怪的例子,而不是一些未知的錯誤。

我記得當我編譯LAMP堆棧的所有部分時,我最初使用-fPIC參數編譯OpenSSL。 httpd與此相關聯。

當我編譯php 5.3.11時,它抱怨說SSL庫應該用「shared」編譯,所以我重新編譯了OpenSSL(相同的安裝目錄),並且將PHP鏈接到了它。

顯然,httpd因爲這個問題而使用OpenSSL庫時遇到問題,所以我重新編譯了新的OpenSSL庫的httpd並重新安裝了它自己。

SSL over LDAP正在運行。