Subversion服务器SSL证书验证失败:和其他原因

时间:2014-03-01 01:29:34

标签: svn ssl-certificate

我有一个SVN系统,工作正常,最近升级后突然停止工作。我的设置:

  • 我使用VisualSVN Server 2.7.4在Windows 2008服务器上托管了一个存储库。服务器使我能够随意生成自签名证书,根据需要输入我自己的主机名或其他数据。

  • 我正在使用Eclipse(Kepler)在托管计算机和运行Mac OS X 10.9.1(Mavericks)的我自己的MacBookPro上进行Java编码。我有Eclipse的subclipse附加组件,它需要使用java HL进行subversion。

  • 我已经安装了macport和subclipse请求的最新subversion / javahl包。 Eclipse / subversion接口似乎工作正常,但是存在Eclipse无法正常导航的命令行subversion错误。解决命令行错误是主要问题。

  • 我之前通过macports安装了以下版本,事情似乎工作正常:

    颠覆@ 1.8.5_1 +通用
    subversion-javahlbindings @ 1.8.5_0 + no_bdb + universal

  • 作为安装/排除不相关内容的一部分,我升级了所有安装了以下新版本的macport:

    颠覆@ 1.8.8_0 +通用
    subversion-javahlbindings @ 1.8.8_0 + no_bdb + universal

  • 升级后,svn通过我的mac上的eclipse失败。我可以通过临时接受证书来强制它通过命令行。它在Windows 2008服务器计算机上仍然可以正常运行。

第一次更改证书后,我可以选择永久接受,但在执行此操作后,它会失败并退回到第二次“临时”对话。

$ svn update
Updating '.':
Error validating server certificate for 'https://192.168.100.59:443':
 - The certificate is not issued by a trusted authority. Use the
   fingerprint to validate the certificate manually!
 - The certificate hostname does not match.
Certificate information:
 - Hostname: 571458-tools1
 - Valid: from Feb 28 23:57:35 2014 GMT until Feb 26 23:57:35 2024 GMT
 - Issuer: 
 - Fingerprint: 55:3E:55:FD:4D:40:A4:1E:8A:1E:27:71:DD:D4:ED:8B:A3:9A:1D:EC
(R)eject, accept (t)emporarily or accept (p)ermanently? p
Error validating server certificate for 'https://192.168.100.59:443':
 - The certificate has an unknown error.
Certificate information:
 - Hostname: 571458-tools1
 - Valid: from Feb 28 23:57:35 2014 GMT until Feb 26 23:57:35 2024 GMT
 - Issuer: 
 - Fingerprint: 55:3E:55:FD:4D:40:A4:1E:8A:1E:27:71:DD:D4:ED:8B:A3:9A:1D:EC
(R)eject or accept (t)emporarily? t
(credentials dialogue)
At revision 46.
  • 在此之后,未来的尝试仍然会导致错误并要求暂时接受:
$ svn update
Updating '.':
Error validating server certificate for 'https://192.168.100.59:443':
 - The certificate hostname does not match.
 - The certificate has an unknown error.
Certificate information:
 - Hostname: 571458-tools1
 - Valid: from Feb 28 23:57:35 2014 GMT until Feb 26 23:57:35 2024 GMT
 - Issuer: 
 - Fingerprint: 55:3E:55:FD:4D:40:A4:1E:8A:1E:27:71:DD:D4:ED:8B:A3:9A:1D:EC
(R)eject or accept (t)emporarily? t
At revision 46.

多个网络搜索,包括此网站和其他网站,已将〜/ .subversion中的身份验证文件指向可能是问题,但所有建议的解决方案(删除,更改所有权和权限等)都未能解决问题

具体问题: 1.我无法弄清楚如何在macports中恢复到之前的subversion(1.8.5)以查看我更新的1.8.8版本中是否存在错误。 2.假设1.8.8中没有错误,我还有什么办法可以对此进行故障排除并永久接受我的证书吗?

编辑: - 通过将自签名证书主机名更改为数字IP,我已经能够摆脱“主机名”错误。但是,所有其他症状仍然存在,包括神秘的“证书有未知错误”。 - 我确信(尽管评论另有说明)1.8.8升级在Mac OS X上破坏了一些东西,我非常有兴趣回滚版本以进一步排除故障。但我想这是一个新问题......

3 个答案:

答案 0 :(得分:7)

多么奇怪,一天前确实有类似的问题。 无论如何,我可能错了,但SVN在1.8.8的明显安全级别比以前的版本更严格。你强制接受哪些证书可能不再被新标准“接受”。我错了,但那是无关紧要的。

如果你看一下你提供的错误,你会看到:

  

证书主机名不匹配。

这是svn不会忽略的SSL错误,它意味着您要连接的是与您指定的主机名不同的主机名。问题是,虽然https://192.168.100.59:443可能引用与存储库服务器相同的URL,例如:https://foobar.com:443 SSL握手将失败,因为主机名不匹配。

对于存储库URL的主机名与SVN服务器证书响应的主机名不匹配的任何情况,此问题仍然存在。

我暗示您通过VisualSVN证书生成工具使用自签名证书。要解决此问题,请重新生成新证书,并确保主机名与您的真实主机名匹配。这应该可以解决你的问题。

请注意:您仍然会收到第一个对话框,警告您正在使用未经验证/有效的证书,但您不应该获得第二个对话框。此外,确保客户端和服务器SVN版本相同,不同的SVN版本会造成严重破坏。

修改

抱歉,我向后看了这个错误,如果你想访问它,你的证书主机名显然应该是571458-tools1192.168.100.59。遵循上述相同的证书重新生成步骤,但使用192.168.100.59的主机名而不是571458-tools1

请注意,这将允许SSL / TLS连接仅在直接使用内部IP时才能工作。

答案 1 :(得分:1)

我能够通过以下链接找出如何恢复到subversion 1.8.5:

trac.macports.org/wiki/howto/InstallingOlderPort

恢复到1.8.5解决了问题。我将直接与subversion开发人员一起进一步解决1.8.8的问题。

答案 2 :(得分:1)

The certificate has an unknown error可能是证书链问题。从Windows SVN 1.8.3升级到1.8.7后我遇到了这个问题。您可以通过运行以下命令来查找:echo | openssl s_client -connect host:443

e.g。

Certificate chain
 0 s:/[redacted]/
   i:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
 1 s:/C=US/O=GeoTrust Inc./CN=GeoTrust SSL CA - G2
   i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
   i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority

这里的错误是1的主题与0的发行者不匹配。修复服务器上的证书链。