Php ZF2 LDAP SSL证书不受信任

Php ZF2 LDAP SSL证书不受信任,php,ssl,zend-framework2,ssl-certificate,zend-auth,Php,Ssl,Zend Framework2,Ssl Certificate,Zend Auth,我正在利用Zend Framework 2 Zend\Authentication\Adapter\Ldap对Windows Active Directory进行身份验证。当我不尝试使用SSL时,这一切都可以完美地工作。SSL I cam出现以下错误: 0x51(无法联系LDAP服务器;错误:14090086:SSL例程:SSL3_获取_服务器_证书:证书验证失败(无法获取本地颁发者证书)): 我怀疑这是因为我们使用自签名证书。我想绕过证书检查。使用标准的php ldap_set_选项,我可以将

我正在利用Zend Framework 2 Zend\Authentication\Adapter\Ldap对Windows Active Directory进行身份验证。当我不尝试使用SSL时,这一切都可以完美地工作。SSL I cam出现以下错误:

0x51(无法联系LDAP服务器;错误:14090086:SSL例程:SSL3_获取_服务器_证书:证书验证失败(无法获取本地颁发者证书)):

我怀疑这是因为我们使用自签名证书。我想绕过证书检查。使用标准的php ldap_set_选项,我可以将TLS_REQCERT设置为never。我在Zend身份验证适配器提供的ldap选项中找不到如何设置此属性。文档中是否有我刚刚错过的一个配置设置说明了这一点


有人知道如何在ZF2中设置REQCERT=never吗?

在通过SSL连接时,客户端默认验证服务器证书-禁用此功能的一种方法是在LDAP的
LDAP.conf
文件中设置
TLS\u REQCERT never
,然后重新启动Apache


如果您真的关心服务器的证书,您应该在web服务器上放置证书。

我必须注意,这并不是不验证您的证书的借口,但如果您正在开发,则可以在Apache/PHP或命令行上测试运行的ZF2和LDAP

对于Apache2.4 我相信您可以在“httpd.conf”中全局地为Apache设置此文件,在“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>
因此,在我的示例中,我将转到(cd)我的zf2应用程序/公用文件夹并运行这两个其他命令


总之,这些建议消除了错误,但现在您必须处理需要在代码或Active Directory中修复的任何其他LDAP到Active Directory问题。

我在Windows中使用XAMPP,无法找到LDAP.conf。我试图将TLS_REQCERT never行添加到httpd.conf中,但Apache无法启动。我应该创建一个ldap.conf吗?不确定,但在windows下,您需要在
C:\OpenLDAP\sysconf\ldap.conf
下创建文件。这个答案需要更多的更新投票…它为我们节省了几个小时的时间。对不起,我忘了在您的ZF2 PHP代码中指出,您也可以仅为开发而添加这个文件(确保在证书可以验证的生产需要中删除它):putenv('LDAPTLS_REQCERT=never');
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 ./