php - 警告 : ldap_start_tls() [function. ldap-start-tls]:无法启动 TLS:服务器不可用

标签 php starttls

Warning: ldap_start_tls() [function.ldap-start-tls]: Unable to start TLS: Server is unavailable in /var/www/html/testldap/index.php on line 13 Ldap_start_tls failed

我的配置如下

Centos 5.7 PHP 版本 5.3.3

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

最佳答案

嗯,我和这个一起经历了多么有趣的旅程。

您遇到的问题是您的计算机不接受服务器的有效证书。解决此问题的简单方法是禁用检查,这是在 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。

来源:

关于php - 警告 : ldap_start_tls() [function. ldap-start-tls]:无法启动 TLS:服务器不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8473406/

相关文章:

php - 无法弄清楚如何从查询中获取我想要的结果

c++ - STARTTLS 后无法写入 ssl (openssl) 套接字

email - 如何在 postfix 中加密外发电子邮件

ssl - 为什么Google的MX服务器与SSL证书CN不匹配?

email - 连接到 SMTP 服务器时,我应该先尝试 SSL 还是 TCP/STARTTLS?

php - SQL 或 PHP 错误?距离计算

php - 使用带有盐的 sha1() 安全吗?

php - 在 Group By 之前计算行数

php - 推荐简单的PHP路由引擎

c++ - libcurl 是否支持发送不加密的电子邮件?