我正在尝试让 ldaps 通过 Apache 2.2.17 (Windows Server 2008) 工作。如果我使用 ldap (纯文本),我的配置会运行良好。
LDAPTrustedGlobalCert CA_DER C:/wamp/certs/Trusted_Root_Certificate.cer
LDAPVerifyServerCert Off
<Location />
AuthLDAPBindDN "CN=corpsvcatlas,OU=Service Accounts,OU=u00958,OU=00958,DC=hca,DC=corpad,DC=net"
AuthLDAPBindPassword ..removed..
AuthLDAPURL "ldaps://gc-hca.corpad.net:3269/dc=hca,dc=corpad,dc=net?sAMAccountName?sub"
AuthType Basic
AuthName "USE YOUR WINDOWS ACCOUNT"
AuthBasicProvider ldap
AuthUserFile /dev/null
require valid-user
</Location>
为了安全起见,我还尝试了除 CA_DER 之外的其他加密选择,但没有成功。
最后,我还需要 Apache tomcat。对于 tomcat,我使用了 tomcat JRE 并运行了如下一行:
keytool -import -trustcacerts -keystore cacerts -storepass changeit -noprompt -alias mycert -file Trusted_Root_Certificate.cer
完成上述操作后,ldaps 通过 tomcat 运行良好。这让我知道我的证书没有问题。
更新:两个 ldap 模块都已打开,因为使用 ldap 而不是 ldaps 可以正常工作。
当我运行 git clone 时返回以下错误:
C:\Temp>git clone http://eqb9718@localhost/git/Liferay.git
Cloning into Liferay...
Password:
error: The requested URL returned error: 500 while accessing http://eqb9718@loca
lhost/git/Liferay.git/info/refs
fatal: HTTP request failed
access.log 有以下内容:
127.0.0.1 - eqb9718 [23/Nov/2011:18:25:12 -0600] "GET /git/Liferay.git/info/refs service=git-upload-pack HTTP/1.1" 500 535
127.0.0.1 - eqb9718 [23/Nov/2011:18:25:33 -0600] "GET /git/Liferay.git/info/refs HTTP/1.1" 500 535
apache_error.log 没有任何内容。我是否可以启用更详细的日志记录或进行更好的测试?
更新 2:我可以在 apache 服务器上运行 wireshark,并且可以清楚地看到传出的连接,但我真的看不懂其他任何东西。我不是 wireshark 专家,只是看起来像行话。
另外,我使用 ldap 浏览器来验证 ldaps 在机器上是否运行正常。
更新 3:我打开 apache 日志记录来进行调试,返回的错误如下:
[3016] auth_ldap authenticate: user eqb9718 authentication failed; URI /git/Liferay.git/info/refs [LDAP: ldap_simple_bind_s() failed][Server Down]
现在请记住,在同一台 Server 2008 机器上,我可以使用 LDAP Browser 通过 ldaps 连接到端口 3269,并且没有任何“故障”。这个错误告诉我们什么?
更新 4:以下是运行 openssl s_client -connect gc-hca.corpad.net: 3269 -showcerts 的结果:http://pastebin.com/2yEGN4C1
我还尝试过 openssl 命令直接转到端口 636 上的域控制器,该命令有效,并且我在我的 httpd.conf 中尝试过该命令,但产生了相同的错误。我不知道是否需要注意,当我直接转到控制器(389 或 636)时,我必须向 URL 添加一个容器,如 ou=group、dc=hca 等。这使得使用 GC 成为必须。一定是 mod_ldap 中的一个错误,因为我从许多其他帖子中找到了该解决方案。
更新 5:我手动启动了 apache,而不是通过服务,这是打印出来的 ldap 调试:
C:\wamp\bin\apache\Apache2.2.17\bin>httpd
[Thu Nov 24 19:19:08 2011] [debug] util_ldap.c(1769): LDAP: SSL verify server ce
rtificate - FALSE
[Thu Nov 24 19:19:08 2011] [debug] mod_authnz_ldap.c(1010): [3144] auth_ldap url
parse: `ldaps://gc-hca.corpad.net:3269/dc=hca,dc=corpad,dc=net?sAMAccountName?s
ub?(objectClass=*)', Host: gc-hca.corpad.net:3269, Port: 3269, DN: dc=hca,dc=cor
pad,dc=net, attrib: sAMAccountName, scope: subtree, filter: (objectClass=*), con
nection mode: using SSL
答案1
您LDAPVerifyServerCert Off
正在使受信任的根配置变得无效 - 因此信任不是问题。
中真的有那么多空格吗OU=Service Accounts
?
您已mod_ldap
启用吗mod_authnz_ldap
?
如果这两个都不是问题,您可以检查错误日志以查找有用的信息吗?