【问题标题】:Need help ignoring server certificate while binding to LDAP server using PHP在使用 PHP 绑定到 LDAP 服务器时需要帮助忽略服务器证书
【发布时间】:2011-04-21 10:51:18
【问题描述】:

我正在尝试使用 PHP 绑定到 LDAP 服务器。这是一个相当简单的过程,除了我无法解决我遇到的证书错误。我的身份验证凭据很好,因为我可以使用 Apache Directory Studio 连接到服务器。有没有办法自动接受服务器证书?类似于您在 Apache directory studio 中单击“接受此证书..”的方式?我知道这不是很好的安全性,但我只需要在这一点上让它工作,然后可以解决证书问题。

谢谢

【问题讨论】:

标签: php ldap


【解决方案1】:

你没有指定环境,所以这里是答案(在本网站的其他地方找到:How do I solve ldap_start_tls() "Unable to start TLS: Connect error" in PHP?):

Linux:在客户端机器(PHP Web 服务器)上修改系统正在使用的 ldap.conf 文件,在 RH/Fedora 中你想要的文件是 /etc/openldap/ldap.conf不是 /etc/ldap.conf,那是为了系统认证...) .添加/修改以下行:

TLS_REQCERT never

Windows:添加系统环境变量,如下所示:

LDAPTLS_REQCERT=never

或者在您的 PHP 代码中,在 ldap_connect 之前,放置以下内容:

putenv('LDAPTLS_REQCERT=never');

这些将确保客户端 Web 服务器 PHP 实例永远不会检查服务器的 FQDN 与证书的 CN(通用名称)。在使用虚拟 IP 和证书的集群环境中非常有用。但由于这也使得 Web 服务器机器上整个操作系统中的其他工具/应用程序也不会检查这一点,请确保您的环境允许此更改(高安全性环境可能不允许这样做)。

【讨论】:

  • 谢谢!在我的例子中,php 是通过 HomeBrew 安装在 MacOS 上的 - 所以 ldap.conf 路径是 /usr/local/etc/openldap/ldap.conf (即使操作系统 openldap 配置确实存在于 /etc/openldap 上)
  • 我在 wamp 服务器上。我在我的 PHP 脚本中添加了putenv('LDAPTLS_REQCERT=never');,但它对我不起作用。我必须创建C:\OpenLDAP\sysconf\ldap.conf 文件并将TLS_REQCERT never 添加到其中。 This 帮助我知道将 conf 文件放在哪里。
【解决方案2】:

使用网络浏览器,指向 ldaps://ipaddress/

当证书弹出框出现时,查看证书,查看证书链,找到受信任的根(不是正在使用的特定证书,而是签署它的父级)然后导出该证书。以 PEM 和 B64 格式保存。 (二进制和 B64 编码)。

然后使用它来将其转换为 PHP 密钥库格式,无论是哪种格式。 Java 密钥库很简单。不确定 PHP 使用什么。

【讨论】:

  • 这个答案是一个粗略的猜测,并没有帮助。
猜你喜欢
  • 2021-08-16
  • 2018-02-05
  • 2015-01-15
  • 1970-01-01
  • 2018-07-31
  • 2021-01-06
  • 1970-01-01
  • 2014-08-11
  • 2011-11-19
相关资源
最近更新 更多