安全远程服务器上的php LDAP绑定失败

Irf*_*son 1 php windows security bind

我试图在Windows PHP本地测试环境中查询安全连接中的远程LDAP服务器.我认为我必须正确授予访问权限,因为我可以使用LDAP浏览器应用程序并且可以很好地连接到远程服务器.此外,如果我'telnet remoteserverurl.com 636'然后在命令提示符中显示一个空白屏幕,所以我至少连接.但是在我的下面的.php代码中,我在bind上遇到错误:"PHP警告:ldap_bind():无法绑定到服务器:无法联系LDAP服务器......"

相同的代码适用于Linux服务器.我认为在我的本地php环境中有一些缺少的LDAP库用于安全的LDAP连接?无论如何,这是代码:

$ds=ldap_connect("ldaps://serveraddress.com", "636");  // remote server
//$ds=ldap_connect("ldap://localhost", 389);  // works
//putenv('LDAPTLS_REQCERT=never');//doesn't help with secure ldap
//ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); //works for local LDAP server (Open LDAP)
$r=ldap_bind($ds, "cn=xxx,ou=proxy,o=xxx", "passwordxxxx");//throws error for remote
Run Code Online (Sandbox Code Playgroud)

任何的想法?谢谢!

小智 5

知道这个更老了,但是我最近在Windows 2008和2012上使用wordpress 3.x和4.x时遇到了类似的问题(IIS 7.x和8.x,PHP 5.6).

我为wordpress编写了一个ldap身份验证插件 - 就像试图获取LDAPS一样(ldap通过端口636工作安全).

情侣:

  1. 使用PHP LDAPS时,文档声明您只需在LDAP服务器前添加前缀ldaps://.所以server1.domain.com对于LDAPS应该ldaps://server1.domain.com/......注意你根本不需要为连接方法传递端口(根据http://php.net/manual/en/function.ldap-connect.php).这与原始问题在提交中的内容非常相似.
  2. windows PHP库是硬编码的,用于查找打开的ldap配置文件(ldap.conf) C:\openldap\sysconf\ldap.conf.
  3. 创建上面#2中提到的文本文件 - 这是您指向证书库的位置.创建此文件后,您可以输入TLS_REQCERT never...但这意味着没有验证证书,并且所有证书都是自动受信任的(基本上) - 应仅用于测试...永远不会用于生产,因为您违反了部分TLS/SSL安全措施(即证明你确实正在与你认为自己有联系的主人交谈.
  4. 而不是TLS_REQCERT never似乎是关于互联网的流行(也许是误导)建议的不安全选项......抓住curl和类似使用的公共证书颁发机构列表 - http://curl.haxx.se/ca/cacert. pem.这基本上就是firefox附带的公共证书颁发机构信任(即,这就是为什么你可以安装firefox并在没有证书警告的情况下访问https://amazon.com等).
  5. 使用PHP安装删除您下载的cacert.pem文件(它只是带有一堆证书哈希和描述的文本文件).例如,假设我用我的php安装转储它c:\php5\cacert.pem.您的位置可能会有所不同,但可以将其放在可以访问的位置,并将与php相关联,因为它是相关的.这里有几个cacert.pem文件内容的镜头,让你了解里面的内容. 示例cacert.pem内容 cacert.pem中的哈希示例
  6. 编辑C:\openldap\sysconf\ldap.conf并为命令添加一行,TLS_CACERT如图所示. 示例ldap.conf文件
  7. 这应该允许您现在像现代Web浏览器那样信任公共的有效证书等.请注意,它不会修复内部颁发的或自签名的证书信任问题.但您也可以通过将自己的证书哈希添加到cacert.pem文件中来轻松完成.
  8. 要在cacert.pem文件中添加另一个证书作为受信任的证书,只需获取相关证书的副本(您只需要将其导出为.cerbase64格式 - 不需要私钥和扩展名无关紧要 - 只需要一个哈希输出).如果您以正确的格式导出它,则可以打开证书文件并查看哈希 - 它与Thawte Server CA示例的屏幕截图类似(但不完全相同).只需将导出的哈希附加到cacert.pem文件中即可信任.如果您希望变得聪明,您可以为您的私人颁发的证书导入颁发证书 - 这将信任由导入的证书签署的任何证书.如果有疑问,您可以随时导入提供的证书.
  9. 进行这些更改后,我发现最好重新启动Web服务器(iis manager - > web服务器节点 - >重启选项),以便重置使用php的所有内容.
  10. 要获得额外的功劳,您可以使用相同的cacert.pem文件进行curl实现,方法是编辑php.ini文件并将完整路径放到行中的cacert.pem文件中curl.cainfo =.
  11. 同样,我知道这是一篇较旧的帖子,但我想分享我在通过LDAPS将wordpress连接到eDirectory时所学到的知识.