我正在利用Zend Framework2Zend\Authentication\Adapter\Ldap对Windows Active Directory进行身份验证。当我不尝试使用SSL时,这一切都能完美地工作。使用SSL时,我会得到以下错误:
0x51 (无法联系LDAP服务器;错误:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate验证失败(无法获取本地颁发者证书)):
我怀疑这是因为我们使用了自签名证书。我想绕过证书检查。使用标准的php ldap_set_option,我可以将TLS_REQCERT设置为never。在Zend身份验证适配器提供的ldap选项中,我找不到如何设置此属性。文档中是否有我刚刚遗漏的配置设置与此相关?
有人知道如何在ZF2中设置REQCERT = never吗?
发布于 2014-08-07 17:55:17
在connect over SSL上,客户机默认验证服务器证书-禁用该功能的一种方法是在LDAP的ldap.conf文件中设置TLS_REQCERT never,然后重新启动Apache。
如果你真的关心服务器的证书,你应该把证书放在web服务器上。
发布于 2014-09-12 07:53:42
我必须指出,这并不是不验证证书的借口,但对于测试在Apache/PHP上或在命令行上运行的ZF2和LDAP,如果您正在开发,这里就是答案。
对于Apache 2.4
我相信你可以将它全局地放在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。
用于开发的PHP命令行界面(例如在Linux上)
当您从命令行(在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问题。
https://stackoverflow.com/questions/25168285
复制相似问题