尝试配置PHP应用程序以安全地对远程LDAP服务器进行身份验证,并且遇到了问题。已安装ldap工具,我可以连接到远程LDAP服务器,但检查error_log,我看到了
Unable to bind to server: Can't contact LDAP server
这是通过在我的应用程序中调用ldap_bind
来触发的。 ldap_connect
不会返回错误。我已经验证我可以使用:
openssl s_client -connect ldap.service.company.com:636
SSL-Session:
Protocol : TLSv1.2
Cipher : AES256-SHA
Session-ID: (snip)
Session-ID-ctx:
Master-Key: (snip)
Key-Arg : None
Krb5 Principal: None
PSK identity: None
PSK identity hint: None
Start Time: 1389213908
Timeout : 300 (sec)
Verify return code: 0 (ok)
tcpdump
和wireshark
用于监控和分析来自我的应用程序的尝试LDAP身份验证的网络流量。
tcpdump -s 1514 port 636 -w capture_file
wireshark
发现致命错误:
TLSv1 Alert (Level: Fatal, Description: Unknown CA)
Apache的ssl.conf配置指向具有正确权限的文件,启动/重新启动httpd时不会显示错误。
帮助/指针表示赞赏。如果我能提供更多数据,请告诉我。
答案 0 :(得分:1)
您可能正在使用636端口上的ldap主机上的签名证书。客户端(您的PHP服务器)拒绝此证书作为证书颁发机构而不是其已知/有效的ca. 获取真实的SSL证书或在您的网络服务器上安装证书路径。
如果且仅当如果,您的网络服务器和ldap主机位于同一网络中且完全由您管理,并且您确定无法在主机之间捕获数据,则可以选择不使用SSL / TLS版本的ldap协议..