我正在嘗試讓 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 瀏覽器透過 ldaps 連接到連接埠 3269,並且沒有任何「故障」。這個錯誤告訴我們什麼?
更新 4:以下是執行 openssl s_client -connect gc-hca.corpad.net: 3269 -showcerts 的結果:http://pastebin.com/2yEGN4C1
我還嘗試過直接連接到連接埠 636 上的網域控制器的 openssl 命令,該命令有效,並且我在 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
啟用了嗎?
如果這些都不是問題,您可以檢查錯誤日誌以獲取有用的信息嗎?