我正在从现有的apache + LDAP + mysql + php服务器迁移到新的硬件平台。 旧的服务器运行Debian Lenny,我没有可用的configuration文件(由以前的系统pipe理员完成); 新的服务器运行Ubuntu 10.04.2 LTS 32位。
在新服务器上安装了Apache并configuration了LDAP客户端之后,LDAP主服务器(另一个专用服务器)的ldapsearch返回结果就好了。 但是,使用https与https时,日志抱怨“不能联系LDAP服务器”。
我使用ldaps进行身份validation,并可以确认636端口在LDAP主服务器上是打开的。 我不明白为什么apache会失败,而正常的ldapsearch工作!
以下是虚拟主机configuration的一部分:
<Directory /> Options FollowSymLinks AllowOverride None #AuthLDAPEnabled on AuthType Basic AuthBasicProvider ldap AuthName "Private" AuthLDAPURL ldaps://master.ldap.organisation.com:636/ou=people,dc=organisation,dc=com?uid AuthzLDAPAuthoritative off require valid-user AddType application/x-httpd-php .php .phtml <IfModule mod_php4.c> php_flag magic_quotes_gpc Off php_flag track_vars On php_value include_path . </IfModule> </Directory>
任何帮助/build议非常感谢!
您需要告诉Apache信任LDAP服务器的证书。
看到这个
ldapsearch(和其他ldap *二进制文件)来自OpenLDAP工具包。 ldapsearch的工作原理(Apache不),原因是以前的系统pipe理员必须将LDAP服务器正在使用的证书(或颁发LDAP服务器证书的CA证书)放到OpenLDAP工具查找证书的位置 – 通常这是是/etc/openldap/cacerts ,但它有点依赖于发行版。
去看看那个目录。
一旦你find了正确的证书,使用mod_ldap指令(见这里 )来指向它。 在LDAPconfiguration之前放置此伪指令。 例如:
如果是LDAP服务器的客户端证书:
LDAPTrustedGlobalCert CERT_BASE64 /etc/openldap/cacerts/ldap-server.pem
如果是签署LDAP服务器证书的CA的证书:
LDAPTrustedGlobalCert CERT_CA /etc/openldap/cacerts/ldap-cacert.pem
使用OpenSSL命令行工具检查证书以确定它是哪个:
openssl x509 -in /path/to/cert.pem -noout -text
libgcrypt11中存在一些错误,这些错误会导致使用GnuTLS 2.10。*或更早版本的问题,并且可以通过在LDAP客户端上运行nscd来解决这些问题。
sudo apt-get install nscd
使用GnuTLS 2.11。*或更高版本,首选encryption后端更改为荨麻。 对于Ubuntu 12.04,请参阅此错误报告: