使用svn进行SSL协商失败

时间:2010-12-18 00:28:10

标签: security svn ssl openssl

我正在运行接受https请求的服务器。我已经生成了自己的证书。当在firefox中访问该站点时,我得到了未知的证书错误,但这没关系。这(我认为)表明端口转发等工作。

我正在尝试使用svn。在服务器上使用svn(但使用外部ip)时,它可以工作。我再次得到证书是未知的,但我不在乎。

在mac OS X上使用svn时,我得到了

  

SSL协商失败:SSL错误代码-1/1/336032856

我在谷歌上发现了几个关于此的帖子,但是他们都说这是openssl 0.9.8版本的一个错误,使用更高版本的帖子应该修复它。

我目前正在使用openssl 1.0.0c。我不知道出了什么问题。我还检查了httpd中的错误日志,但没有出现。

任何关于此的想法都会有所帮助。

由于

7 个答案:

答案 0 :(得分:7)

从SVN 1.6.15升级到1.6.16为我解决了这个问题。

答案 1 :(得分:7)

当我的Apache配置错误时,我收到了相同的错误消息 - httpd.conf中的 ServerName 参数与自签名证书中的 hostname 不匹配。

答案 2 :(得分:2)

当我们的svn服务器升级了Apache实例时,我开始从较旧的subversion客户端(Tortoise 1.6.4,我认为和pysvn r1280)获得此错误。它从使用OpenSSL 0.9.8n变为1.0.0d。

通过升级到1.6.16(使用OpenSSL 1.0.0d)来修复Tortoise。

修复pysvn是另一回事。最新版本(r1360)出现了同样的错误。除了提示OpenSLL可能需要升级之外,似乎没有太多信息。我尝试在不同版本的OpenSSL(libeay32.dll和ssleay32.dll)中复制,结果如下:

  • 0.9.8j(现有的DLL版本,与pysvn r1280捆绑在一起)FAIL
  • 0.9.8o(与最新的pysvn捆绑,r1360)FAIL
  • 0.9.8r(0.9.8系列中的最新版本)FAIL
  • 1.0.0 *(1.0系列与pysvn不是二进制兼容)FAIL
  • 0.9.8L (从CollabNet SVN 1.6.9命令行客户端获取)成功!

所以无论他们在发行版L中修复了什么,很快就会再次破坏,或者CollabNet的OpenSSL二进制文件有一些特别之处。

答案 3 :(得分:1)

在我的情况下,它在服务器端的某些证书​​更改后开始发生。我尝试删除.subversion / dir,更新openssl,openssh,svn,什么都没有......

当我用该主机的IP地址替换url主机名时,它终于得到了修复。 在现有的工作副本中就足够了:

svn  switch  --relocate http://hostname.com https://ipaddress

不确定这是一个错误还是什么,但似乎无法识别新证书并继续使用旧缓存的证书来获取给定的主机名。

答案 4 :(得分:1)

我同意Lukas Cenovsky先前的回答,即在apache配置中设置ServerName可以解决问题。

在此链接http://www.elegosoft.com/files/svn-day-berlin-2011_sperling_subversion-error-messages-demystified.pdf中,据说错误源自SSL库。

我收到的完整错误消息(只是为了启用更好的Google索引)是:

$ svn ls https://www.OMITTED.dk/svn
svn: E175002: Unable to connect to a repository at URL 'https://www.OMITTED.dk/svn'
svn: E175002: OPTIONS of 'https://www.OMITTED.dk/svn': SSL handshake failed: SSL error code -1/1/336032856 (https://www.OMITTED.dk)

在/ etc / apache2 / sites-available / ssl文件中(debian linux) 我将ServerName添加为:

NameVirtualHost *:443
  <VirtualHost *:443>
        ServerAdmin webmaster@localhost
        SSLEngine On
        ServerName www.OMITTED.dk

答案 5 :(得分:0)

如果您通过将生成的证书添加到客户端的可信证书存储区来消除SSL问题,那么会发生什么。

答案 6 :(得分:0)

领先一步,我的案例是MSWindows客户端工作站和带Apache的CentOs服务器。

使用Tortoise Subversion 1.6.16,我意识到在执行“svn checkout https://OMITTED.dk/project”之后,我得到了相同的ssl握手错误。

我做的是

  1. 使用“IP_address”更新c:\ windows \ system32 \ drivers \ etc \ hosts OMITTED.dk“
  2. 使用项目目录更新条目。编辑 文件项目/条目,并用OMITTED.dk替换IP_address。
  3. 因此我尝试命令:svn update path_to_project --non-interactive --trust-server-cert。 希望将是有用的