我有一个使用Apache在Ubuntu 11.04上运行的Subversion服务器,我试图用LDAPS来挂接authentication。 我得到的Apacheconfiguration文件设置为LDAP(无s)就好,但安全的版本给我…问题。 显然这是一个证书问题。 不幸的是我是一个证书n00b。
我发现这个问题 ,这似乎是我得到的同样的问题。 我尝试将LDAPVerifyServerCert off放在我的httpd.conf中,并且工作正常 – 但是我不认为如果它出现问题,我只想忽略证书,是吗?
我认为我们的LDAP服务器有一个自签名的证书…也许你可以从确认或否认这一点开始。 这是我运行openssl s_client -connect myldap.xyz.edu:636 -showcerts时得到的openssl s_client -connect myldap.xyz.edu:636 -showcerts :
CONNECTED(00000003) depth=0 /CN=myldap.xyz.edu verify error:num=20:unable to get local issuer certificate verify return:1 depth=0 /CN=myldap.xyz.edu verify error:num=27:certificate not trusted verify return:1 depth=0 /CN=myldap.xyz.edu verify error:num=21:unable to verify the first certificate verify return:1 --- Certificate chain 0 s:/CN=myldap.xyz.edu i:/DC=edu/DC=xyz/CN=myldap -----BEGIN CERTIFICATE----- [certificate here] -----END CERTIFICATE----- --- Server certificate subject=/CN=myldap.xyz.edu issuer=/DC=edu/DC=xyz/CN=myldap --- Acceptable client certificate CA names /DC=edu/DC=xyz/CN=myldap [...] --- SSL handshake has read 13738 bytes and written 289 bytes --- New, TLSv1/SSLv3, Cipher is RC4-MD5 Server public key is 1024 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : RC4-MD5 Session-ID: [...] Session-ID-ctx: Master-Key: [...] Key-Arg : None Start Time: 1335300252 Timeout : 300 (sec) Verify return code: 21 (unable to verify the first certificate)
我从这个输出(从BEGIN行到END行)复制证书,将其粘贴到/etc/ssl/certs/myldap.xyz.edu.pem ,运行c_rehash ,并尝试openssl s_client -connect myldap.xyz.edu:636 -CAfile /etc/ssl/certs/myldap.xyz.edu.pem -showcerts 。 没有运气。 它给了我相同的确切的错误。
这是我的httpd.conf文件:
ServerName svnserver.xyz.edu <Location /> DAV svn SVNParentPath /var/svn SVNPathAuthz off AuthName "Subversion server" AuthType Basic AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPBindDN "[email protected]" AuthLDAPBindPassword "[password]" AuthLDAPURL "ldaps://myldap.xyz.edu/DC=xyz,DC=edu?sAMAccountName?sub?(objectClass=*)" NONE Require ldap-user user1 user2 </Location>
如果我没有弄错的话,LDAP服务器是在Windows Server 2008上运行的Active Directory。 我实在没有办法搞砸了,我不认为我需要 – 我们已经在很多地方使用它了。 在客户端有一些问题。 我一直在寻找谷歌三天没有运气。 所以,任何人都可以1)解决问题,2)用一个解决scheme指向我一个不同的问题,或3)链接到一个教程将非常感激。 :^)
编辑:
下面是我根据chutz的build议运行的命令和结果:
root@svnserver:~# openssl x509 -noout -issuer_hash < /etc/ssl/certs/myldap.xyz.edu.pem 505d0f30 root@svnserver:~# openssl x509 -noout -hash < /etc/ssl/certs/myldap.xyz.edu.pem 1045bba3
所以哈希和发行者哈希是不同的,这意味着它不是自签名的。 我想我现在对自己的了解有点好了。 起初,我并没有意识到,实体/CN=myldap.xyz.edu和/DC=edu/DC=xyz/CN=myldap被视为两个单独的东西,即使它们指向同一台机器。 所以我拿到了前者的证书,但是现在我需要后者的证书,对吗? 我会看看我的老板能告诉我什么(他是ADpipe理员)。
编辑#2:
我拿到了发行者证书,把它放在/etc/ssl/certs/myldap1.pem ,然后运行c_rehash。 我一定要检查哈希值, myldap1.pem显示myldap1.pem主题和发行者哈希值,与我的myldap.xyz.edu证书的发行者myldap.xyz.edu 。 所以我再次尝试了openssl s_client命令。 起初,它给了我相同的一组错误,但是一旦我记得添加-CAfile选项,它会回来,而不是
Verify return code: 10 (certificate has expired)
啊,很好。 事实certificate,我的证书在2009年有一个到期date。> _ <呃,至less我们已经遇到了一个我们知道如何解决的问题。 感谢你的帮助!
您的证书不是自签名证书。 如果是的话,下面的“主题”和“发行人”应该是完全相同的。
Server certificate subject=/CN=myldap.xyz.edu issuer=/DC=edu/DC=xyz/CN=myldap
这很可能是您无法正确validation它的原因 – openssl s_client -showcerts在屏幕上显示的证书不是CA证书。
只要仔细检查,尝试运行以下命令。
openssl x509 -noout -issuer_hash < /etc/ssl/....pem
openssl x509 -noout -hash < /etc/ssl/....pem
如果这两个哈希值不同,那么它就不是自签名证书。 如果是这样(正如我怀疑的),你唯一的select就是以某种方式获得颁发CA证书。 尝试询问Active Directorypipe理员并执行你已经做的事情 – 将其转储到/ etc / ssl / certs中并运行c_rehash。
当你得到证书时,运行openssl x509 -noout -hash并确保它与LDAP证书的-issuer_hash相匹配。