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

Dan*_*dis 7 svn ssl-certificate

我有一个SVN系统,工作得很好,最近升级后突然停止工作.我的设置:

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

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

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

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

    subversion @ 1.8.5_1 + universal
    subversion-javahlbindings @ 1.8.5_0 + no_bdb + universal

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

    subversion @ 1.8.8_0 + universal
    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.
Run Code Online (Sandbox Code Playgroud)
  • 在此之后,未来的尝试仍然会导致错误并要求暂时接受:
$ 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.
Run Code Online (Sandbox Code Playgroud)

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

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

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

ini*_*mfs 7

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

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

证书主机名不匹配.

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

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

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

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

编辑:

对不起,我向后看了这个错误,你的证书主机名显然571458-tools1192.168.100.59在你想要访问它的时候.遵循上面相同的证书重新生成步骤,但使用主机名192.168.100.59而不是571458-tools1.

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

  • FYI Subversion的serf HTTP Library支持不支持使用ips验证证书.霓虹灯(默认高达1.7.x,甚至不再包含在1.8.x中).我不认为这是问题,但值得一提. (2认同)

Kev*_*yth 2

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

例如

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
Run Code Online (Sandbox Code Playgroud)

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