[英]ZF2 LDAP SSL certificate untrusted
我利用Zend Framework 2 Zend \\ Authentication \\ Adapter \\ Ldap對Windows Active Directory進行身份驗證。 當我不嘗試使用SSL時,這一切都可以完美地工作。 使用SSL時,我收到以下錯誤:
0x51(無法聯系LDAP服務器;錯誤:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗(無法獲取本地頒發者證書)):
我懷疑這是因為我們使用了自簽名證書。 我想繞過證書檢查。 使用標准的php ldap_set_option,我可以將TLS_REQCERT設置為never。 我在Zend身份驗證適配器提供的ldap選項中找不到如何設置此屬性。 在與此相關的文檔中,我是否缺少配置設置?
有人知道如何在ZF2中設置REQCERT =永不設置嗎?
我必須注意,這不是不驗證證書的借口,而是為了測試在Apache / PHP或命令行上運行的ZF2和LDAP(如果正在此處開發的話)就是答案。
我相信您可以將其全局放置在Apache的“ httpd.conf”中,每個網站的“ VirtualHost”配置中,或更具體地將其放置在本地“ .htaccess”文件夾中。 如果您需要了解這些文件之間的差異,我可以提供進一步的幫助,但是現在,您可以對特定ZF2應用程序的VirtualHost配置有所了解,這將很有用,因此並不是將其應用於所有正在開發的站點。
確保已啟用Apache中的mod_env模塊。
將其添加到ZF2應用程序的VirtualHost下:
<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example.com
# The following allows for not requiring the certificate when developing between LDAP and AD SSL.
SetEnv LDAPTLS_REQCERT never
# Other directives here for your ZF2/PHP LDAP based site
</VirtualHost>
確保重新啟動Apache! 有關更多環境信息,請參見http://httpd.apache.org/docs/current/mod/mod_env.html 。
當從命令行(在bash shell中)運行PHP時,要測試您的ZF2站點,請轉到公用文件夾並運行以下命令進行開發:
cd [path_to_ZF2_development_directory_without_brackets]/public
// sets the environment variable for this session only
LDAPTLS_REQCERT=never
// Runs PHP 5 's built in non-production Web server on the folder; listening on port 80 from all available sources.
php -S 0.0.0.0:1080 -t ./
因此,在我的示例中,我將轉到(cd)我的zf2-application / public文件夾並運行其他兩個命令。
總而言之,這些建議可以消除錯誤,但是現在您必須處理需要在代碼或Active Directory中修復的所有其他LDAP到Active Directory問題。
在通過SSL連接時,客戶端默認情況下會驗證服務器證書-禁用此證書的一種方法是TLS_REQCERT never
在LDAP的ldap.conf
文件中設置TLS_REQCERT never
,然后重新啟動Apache。
如果您確實關心服務器的證書,則應將證書放在Web服務器上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.