当对我们的svn服务器运行svn时,我收到此错误(域名和指纹编辑):
Error validating server certificate for 'https://svn.example.org:443':
- The certificate has expired.
- The certificate has an unknown error.
Certificate information:
- Hostname: mail.example.org
- Valid: from Fri, 24 Sep 2010 13:05:10 GMT until Wed, 09 Feb 2011
15:24:52 GMT
- Issuer: 07969287, http://certificates.godaddy.com/repository,
GoDaddy.com, Inc., Scottsdale, Arizona, US
- Fingerprint: 00:e5:....
(R)eject or accept (t)emporarily? t
所以有一个错误说它已经过期了,几行之后就说有效期是2011年。然后有一个未知的错误。这是svn 1.6 - 旧版本有永久接受选项。
我还尝试运行openssl s_client
来检查证书:
openssl s_client -host svn.example.org -port 443 -verify 5 -CApath /etc/ssl/certs
除了其他输出,我得到:
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: zlib compression
Expansion: zlib compression
SSL-Session:
Protocol : TLSv1
Cipher : DHE-RSA-AES256-SHA
Session-ID: 7604...
Session-ID-ctx:
Master-Key: 22AB...
Key-Arg : None
Compression: 1 (zlib compression)
Start Time: 1288804434
Timeout : 300 (sec)
Verify return code: 0 (ok)
这表明SSL已正确设置。
我唯一能想到的是我们使用的是多域证书,mail.example.org是主题CN和svn.example.org列在subjectAltName部分。
这影响了很多人,我不希望我们的客户必须处理这个问题,所以我真的很喜欢这个错误的解决方案,而不仅仅是为我修复它。任何帮助表示赞赏。
修改:我可以在我的网络浏览器中加载https://svn.example.org/
并且它不会抱怨。我可以通过Web浏览器查看证书层次结构,但链中没有任何证书已过期。
我按照Bruno的建议检查了ldd svn
,它与libgnutls链接,而openssl与libssl链接。是否有使用libgnutls的s_client命令的等价物?
编辑2:(因此很容易找到以后的人)。 svn
使用gnutls库而不是ssl库,而gnutls比ssl更严格。因此,为了查看错误,您需要使用gnutls-cli
。就我而言,gnutls didn't like the order of certificates,尽管他们都在那里。有关更多详细信息,请参阅之前的链接。
答案 0 :(得分:1)
我不确定它是否能解决您的问题,但您可以在ssl-authority-files
中配置~/.subversion/servers
选项(如果您愿意,可以将其限制为某些主机)。< / p>
此外,您的svn
版本可能与OpenSSL的另一个库链接,用于其SSL / TLS堆栈,例如GnuTLS(这应该在svn二进制文件上使用ldd
可见)
(您是否检查过CA证书是否已过期,而不是服务器证书本身?)