安全远程服务器Windows上的php LDAP绑定失败
我试图在Windows php本地测试环境中通过安全连接查询远程LDAP服务器。我想我必须正确授予访问权限,因为我可以使用LDAP浏览器应用程序,并且可以很好地连接到远程服务器。另外,如果我使用“telnet remoteserverurl.com 636”,则命令提示符中会显示一个空白屏幕,因此我至少正在连接。但在下面的.php代码中,我在绑定时遇到了一个错误:“php警告:ldap_bind():无法绑定到服务器:无法在线联系ldap服务器…” 同样的代码也适用于Linux服务器。我认为我的本地php环境中缺少某种LDAP库来实现安全的LDAP连接?无论如何,代码如下:安全远程服务器Windows上的php LDAP绑定失败,php,windows,security,bind,Php,Windows,Security,Bind,我试图在Windows php本地测试环境中通过安全连接查询远程LDAP服务器。我想我必须正确授予访问权限,因为我可以使用LDAP浏览器应用程序,并且可以很好地连接到远程服务器。另外,如果我使用“telnet remoteserverurl.com 636”,则命令提示符中会显示一个空白屏幕,因此我至少正在连接。但在下面的.php代码中,我在绑定时遇到了一个错误:“php警告:ldap_bind():无法绑定到服务器:无法在线联系ldap服务器…” 同样的代码也适用于Linux服务器。我认为我的
$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
有什么想法吗?谢谢 检查您的PHP库
<?php phpinfo() ?>
因为您可以使用LDAP客户端进行连接,所以我希望您的LDAP运行SSL
您是否复制了SSL证书
我让它工作了@s、 贷款人的“回答”(谢谢)指出了一些证书问题,事实上这是一个证书问题。remove LDAP服务器的证书处于过期状态——即使在使用桌面应用程序(SoftTerra LDAP浏览器)连接时,我也收到了一条警告。所以将证书导入到我的Windows证书中——SoftTerra LDAP浏览器应用程序允许我使用该选项。还有,瞧!。SSL LDAP调用正在工作 **更新:不确定上面的证书是否有用,但这里有一个更具体的东西帮助了我:看起来php LDAP库在寻找某个conf文件;硬编码为:C\OpenLDAP\sysconf\ldap.conf?!因此,我基本上根据这些信息创建了新文件夹,并将ldap.conf文件放入“TLS_REQCERT never”中,这很有帮助!我已经对它进行了测试。如果我要删除这个文件,那么我的安全LDAP查询将不起作用,并且在“绑定”步骤中失败。注意,我对conf中的“从不”很满意,因为这将只在我自己的工作站上 另请注意,我使用的是运行IIS 7+的Windows 7**
希望这对其他人有所帮助。我知道这比较旧,但最近在windows 2008和2012(IIS 7.x和8.x,PHP 5.6)上使用wordpress 3.x和4.x时遇到了类似的问题 我为wordpress编写了一个ldap身份验证插件,当时我正试图获得LDAPS(通过端口636的ldap安全性) 两件事:
LDAPS://
。因此ldap的server1.domain.com
应该是ldaps://server1.domain.com/
…注意,连接方法(per)根本不需要传递端口。这与原问题在提交材料中的内容非常相似C:\openldap\sysconf\ldap.conf
中查找打开的ldap配置文件(ldap.conf
)TLS\u REQCERT never
…但这意味着不会验证任何证书,并且所有证书都会自动信任(基本上)-应该仅用于测试…决不会用于生产,因为您会破坏部分TLS/SSL安全措施(即,证明您确实在与您认为与您有联系的主机通话)TLS_REQCERT never
选项不同,该选项似乎是互联网上流行的(可能是误导的)建议…获取curl和类似公司使用的公共证书授权列表。这本质上是firefox为公共证书授权信托提供的(也就是说,这就是为什么您可以安装firefox并在没有证书警告的情况下转到等)c:\php5\cacert.pem
中。你的位置可能不同,但是把它放在一个可以访问的地方,因为它是相关的,所以会与PHP内容分组。下面是cacert.pem
文件内容的几个快照,让你了解其中的内容。
C:\openldap\sysconf\ldap.conf
并为命令TLS\u CACERT
添加一行,如图所示。
.cer
——不需要私钥,扩展名也不重要——只需要是散列输出)。如果以正确的格式导出,则可以打开证书文件并查看哈希-它将类似(但不完全相同)到Thawte服务器CA示例的屏幕截图。只需将导出的哈希附加到cacert.pem文件中,它就会被信任。如果你想变得聪明,你可以为私人颁发的证书导入颁发证书-这将信任由导入的证书签名的任何证书。如果有疑问,你可以始终使用JU请不要导入提交的证书