【问题标题】:Warning: ldap_start_tls() [function.ldap-start-tls]: Unable to start TLS: Server is unavailable警告:ldap_start_tls() [function.ldap-start-tls]:无法启动 TLS:服务器不可用
【发布时间】:2012-01-18 09:26:18
【问题描述】:

警告:ldap_start_tls() [function.ldap-start-tls]:无法启动 TLS:服务器在第 13 行的 /var/www/html/testldap/index.php 中不可用 ldap_start_tls 失败

我的配置如下

Centos 5.7 PHP 版本 5.3.3

php53-ldap 已配置。无论我尝试做什么,starttls 问题都让我头疼。任何帮助将不胜感激。

【问题讨论】:

  • 请出示您的代码,并告知您尝试连接的 LDAP 提供商。

标签: php starttls


【解决方案1】:

installedPHP --with-ldap[=DIR] 了吗?

还有:

  1. 如果您已经通过 SSL 连接到 LDAP 服务器,请不要使用 ldap_start_tls(),例如“ldaps://hostame”。
  2. 使用 ldap:// 而不是 ldaps:// 调用 ldap_connect() 以使 ldap_start_tls() 成功

Source.

【讨论】:

  • 我已经用 php-ldap 配置了 php 我有来自活动目录的系统管理员的设置,因此需要使用它们。
【解决方案2】:

嗯,我在这个旅程中经历了多么有趣的旅程。

您遇到的问题是您的机器不接受服务器的有效证书。解决此问题的简单方法是禁用检查,该检查在 ldap.conf 文件中或使用环境变量完成。

您可以在/etc/openldap/ldap.conf(Windows 上为c:\openldap\sysconf\ldap.conf)上编辑该文件,或者如果该文件尚不存在,则创建一个并将这一行放入其中:

TLS_REQCERT never

...或者您可以创建一个名为LDAPTLS_REQCERT 的环境变量,其值为never

一旦我完成了其中任何一件事情,下面的脚本就为我工作了:

<?php

  // Settings
  $host = 'server.domain.local';
  $port = 389;
  $user = 'administrator';
  $pass = 'password';

  // Connect, set options and bind
  $ds = ldap_connect($host, $port);
  if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) exit('Could not disable referrals');
  if (!ldap_set_option($ds, LDAP_OPT_REFERRALS, 0)) exit('Could not disable referrals');
  if (!ldap_start_tls($ds)) exit('Could not start TLS');
  if (!ldap_bind($ds, $user, $pass)) exit('Bind operation failed');

  // A quick list operation to make sure it worked
  if (!$result = ldap_list($ds, 'dc=domain,dc=local', 'objectClass=*')) exit('List operation failed');
  print_r(ldap_get_entries($ds, $result));

令人讨厌的是,putenv('LDAPTLS_REQCERT=never');$_ENV['LDAPTLS_REQCERT'] = 'never'; 都不起作用 - 您必须创建配置文件或静态设置变量。

如果您想验证证书,您需要进一步阅读如何正确配置 OpenLDAP。

来源:

【讨论】:

  • 救命稻草。 mkdir C:\openldap\sysconf.
  • @DaveRandom ,我可以在允许较低安全协议(例如 TLS 1.1 及更低版本)的 LDAP 服务器上执行此方法进行连接,但我尝试安全地连接到仅允许 TLS 1.2 的 LDAP 服务器.我得到一个“无法连接到 LDAP 服务器”(如果我连接不安全,它是成功的)。我确定我这边启用了 TLS 1.2 协议。通过检查 Windows 注册表确保能够通过浏览器(例如 IE、chrome)通过 TLS 1.2 进行连接。关于我的问题可能是什么的任何线索。非常感谢帮助。
猜你喜欢
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-31
  • 2017-02-23
  • 1970-01-01
  • 2019-08-13
相关资源
最近更新 更多