【问题标题】:SSL negotiation failed with svnsvn 的 SSL 协商失败
【发布时间】:2011-05-27 10:17:52
【问题描述】:

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

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

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

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

我在 google 上找到了几篇关于此的帖子,但他们都说这是 openssl 版本 0.9.8 的错误,使用更高版本应该可以修复它。

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

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

谢谢

【问题讨论】:

    标签: security svn ssl openssl


    【解决方案1】:

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

    【讨论】:

    • 这是正确答案。 homebrew 默认安装 1.6.16。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      当我们的 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 捆绑)失败
      • 0.9.8o(与最新的pysvn,r1360捆绑)失败
      • 0.9.8r(0.9.8 系列的最新版本)失败
      • 1.0.0*(1.0系列与pysvn二进制不兼容)失败
      • 0.9.8L(从 CollabNet SVN 1.6.9 命令行客户端获取)成功!

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

      【讨论】:

        【解决方案4】:

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

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

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

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

        【讨论】:

        • 这也解决了我的问题(SVN 版本 1.7.10),但我认为这只是一种解决方法。我的 SVN 服务器上可能发生了一些变化(我无法控制它),导致 SVN 无法识别已经受信任的服务器证书。
        【解决方案5】:

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

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

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

        $ svn ls https://www.OMITTED.dk/svn svn:E175002:无法连接到 URL 'https://www.OMITTED.dk/svn' 的存储库 svn:E175002:'https://www.OMITTED.dk/svn'的选项:SSL握手失败:SSL错误代码-1/1/336032856(https://www.OMITTED.dk)

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

        名称虚拟主机 *:443 ServerAdmin webmaster@localhost SSL引擎开启 服务器名称 www.OMITTED.dk

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

            先一步,我的案例是一个 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. 使用项目目录更新条目。编辑 文件 project/entries 并将 IP_address 替换为 OMITTED.dk。

            因此我尝试了命令:svn update path_to_project --non-interactive --trust-server-cert。 希望有用

            【讨论】:

              猜你喜欢
              • 2017-07-13
              • 1970-01-01
              • 2015-12-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多