php - Active Directory LDAPS 通过自签名证书启用。但是 PHP 客户端无法通过 AD 服务器进行身份验证
问题描述
我已经配置了一个带有 ldaps 的 Active Directory,并带有一个通过 AD CS 角色创建的自签名证书。我在这篇文章的帮助下进行了配置。我想在一台 linux 机器上连接一个 php 应用程序,以通过 LDAPS 与 AD 目录连接
https://www.trustzone.com/microsoft-ad-ldap-2012/
所以之后我在 Windows Server 2012 机器上验证了与 ldp.exe 工具的连接。它验证连接已建立。所以我在 AD 中创建了用户,以便在 linux 机器上获得我的一个 php 应用程序的身份验证。因此,当我尝试通过 LDAP 进行通信时,它可以工作。但是当我尝试通过 LDAPS 连接时,它失败了。我从客户端提供了用于身份验证的 IP 地址和主机名。
正如我之前所说,我尝试连接 LDAP 并成功。但是它并没有失败,但是当我提供主机名时,它永远无法进行身份验证;但是当我给IP它成功了。但是当涉及到 LDAPS 时,这两种情况都失败了。我根据上面的链接为主机名创建了证书。我还将客户端计算机上的主机名添加到 /etc/hosts 文件中。
这是由于自签名证书问题吗?我真的是 Active Directory 的新手。
我希望通过 LDAPS 以及 LDAP 进行身份验证。但是对于 LDAPS,它没有经过身份验证。我错过了什么或配置错误。
解决方案
是的,很可能是证书。一方面,您必须使用分配给证书的域名 - 您无法使用 IP 进行连接。
但是,客户端计算机必须信任证书才能使连接正常工作。
对于测试,您可以通过将其放入您的 ldap.conf 文件(可能在/etc/ldap/ldap.conf
)中来告诉它甚至不检查证书:
TLS_REQCERT never
这样,它仍将使用证书进行加密,但不会验证有关证书的任何内容。
但是对于测试以外的任何事情,您都应该确保证书受到适当的信任,因为证书的一部分工作是验证您正在与正确的服务器通信。这里有一些说明(您需要先将证书导出到文件中):https ://www.novell.com/coolsolutions/tip/5838.html
推荐阅读
- sql - SQL 查询(加入?)
- android - AndroidManifest 上 ENOENT 的 Cordova 插件添加失败
- c# - 不知道这个 c# 事件处理与 lambdas 是如何工作的,有人可以向我解释一下吗?
- javascript - 如何执行顺序 ajax 调用?
- c# - 在 Azure 函数中使用 Azure Fluent SDK 时,如何使用托管服务标识创建 azure 对象?
- sqlite - SQLite3 单行命令导出表到.sql文件
- javascript - ReactJS - 子组件中的 Ajax
- html - 为什么我的总价没有显示在网页上?
- python-3.x - 当我尝试添加超过 10 个日历小部件时,tkcalendar 需要很长时间才能加载
- powershell - 取消 gui popup 的返回结果