操作系统:Redhat LinuxSubversion: 1.5.0Apache: 2.2.17 Redhat LinuxSubversion: 1.5.0Apache: 2.2.17
httpd.conf:
LDAPSharedCacheSize 200000
LDAPCacheEntries 1024
LDAPCacheTTL 600
LDAPOpCacheEntries 1024
LDAPOpCacheTTL 600
<Location /svn>
DAV svn
SVNParentPath /home/svnroot/repository
AuthzSVNAccessFile /home/svnroot/repository/svn_access_file
AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL "ldaps://master.ldap.ebupt.com:636/OU=staff,DC=ebupt,DC=com?uid?sub?(objectClass=*)" SS
L
AuthName "Subversion.resository"
Require valid-user
</Location>
Apache error_log.Ping master.ldap.ebupt.com is OK:
[Thu Feb 24 16:48:00 2011] [debug] mod_authnz_ldap.c(403): [client 10.1.85.181] [25242] auth_ldap a
uthenticate: using URL ldaps://master.ldap.ebupt.com:636/OU=staff,DC=ebupt,DC=com?uid?sub?(objectCl
ass=*)
[Thu Feb 24 16:48:00 2011] [info] [client 10.1.85.181] [25242] auth_ldap authenticate: user jinjian
kang authentication failed; URI /svn [LDAP: ldap_simple_bind_s() failed][Can't contact LDAP server]
ping master.ldap.ebupt.com is OK.
我的FTP LDAPS认证正常,如下图。
server:master.ldap.ebupt.com
port:636
Enable SSL:checked
Base DN:ou=staff,dc=ebupt,dc=com
anonymous:checked
Search Filter:(objectClass=*)
User DN attribute:uid
Search scope:subtree
"无法联系LDAP服务器 "可能意味着很多事情,但如果你的LDAP服务器是可以到达的,而且你在这里使用简单的SSL绑定,这意味着Apache不信任LDAP服务器出示的证书。
你需要告诉Apache关于证书的信息,这样它才能创建SSL连接。
Apache文档中的这一部分就是你需要的。http:/httpd.apache.orgdocs2.2modmod_ldap.html#usingssltls#。
最好的方法是从你的LDAP服务器上签署证书的CA那里获取CA证书,并使用LDAPTrustedGlobalCert指令。一个例子,来自我的一个盒子。
LDAPTrustedGlobalCert CERT_BASE64 /etc/openldap/cacerts/cacert.pem
如何获取CA证书的方法各不相同;我的LDAP服务器运行的证书是由我们自己的CA签署的,所以我可以很容易地获取CA证书。你的设置可能不一样,请咨询看管你LDAP服务器的人。
你也可以使用OpenSSL工具来获取LDAP服务器出示的证书。
openssl s_client -connect your.ldap.host:636 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
这将显示证书。将所有内容(包括BEGIN CERTIFICATE和END CERTIFICATE)复制到一个文件中。
现在将指令添加到Apache配置的顶部。
LDAPTrustedGlobalCert CERT_BASE64 /path/to/your/cert/file
添加到Apache配置的顶部。重新启动Apache,就可以了。