使用SVN的SSL握手失败

使用SVN的SSL握手失败,svn,centos,ssl,Svn,Centos,Ssl,我正在尝试访问已使用一段时间的SVN服务器,但现在收到以下错误: SSL握手失败:SSL错误:已发送TLS警告警报 收到 在我以前没有访问过服务器的其他机器上(所有这些都是在CentOS上完成的),系统会提示我(R)弹出、临时接受(t)或永久接受(p)?选择提供的证书,然后我就能成功连接。我的结论是,旧证书已缓存,我需要获取一个新证书,但是,我无法找到清除它的方法,并且在运行svn时再次收到此提示 我确实读过许多类似的问题,这导致我清除/删除了我的.subversion文件夹,但即使在这之后,它

我正在尝试访问已使用一段时间的SVN服务器,但现在收到以下错误:

SSL握手失败:SSL错误:已发送TLS警告警报 收到

在我以前没有访问过服务器的其他机器上(所有这些都是在CentOS上完成的),系统会提示我(R)弹出、临时接受(t)或永久接受(p)?选择提供的证书,然后我就能成功连接。我的结论是,旧证书已缓存,我需要获取一个新证书,但是,我无法找到清除它的方法,并且在运行svn时再次收到此提示


我确实读过许多类似的问题,这导致我清除/删除了我的.subversion文件夹,但即使在这之后,它仍然不会提示我证书,并且由于上述错误而继续失败。有什么想法吗?

您没有指定在哪个版本的CentOS上遇到此问题

EL6附带的subversion是针对GnuTLS链接的,这是对以前针对OpenSSL链接的版本的更改

您可以使用ldd对此进行测试:

$ ldd /usr/bin/svn | grep ssl
$ ldd /usr/bin/svn | grep tls
        libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0x0030f000)
$
GnuTLS库在某些情况下更为特殊。最常见的两种:

  • 远程站点使用类似DES的弱密码
  • 远程站点有一个证书,其名称与您指定的名称不匹配
  • 在名称不匹配的情况下,您可以使用IP地址而不是名称来回避问题。如果主机为foo.com且IP地址为1.2.3.4,则可以尝试以下方法:

    svn switch --relocate https://foo.com/my-repo-name https://1.2.3.4/my-repo-name
    

    您还可以尝试从源代码构建subversion,并在配置中使用openssl而不是gnutls。

    这个问题可以通过编辑Apache配置来解决。
    ServerName
    指令应设置在
    VirtualHost
    块内,例如:

    <VirtualHost *:443>
      ServerName mywebsite.com
    </VirtualHost>
    
    
    服务器名mywebsite.com
    

    ServerName
    应与您的SSL证书上的CN或其中一个备选名称匹配。

    我在CentOS 6.3上。我在没有看到这篇文章的情况下做了一些非常接近IP建议的事情,它确实帮助我解决了这个问题。但我不明白为什么。感谢您提供关于不同GnuTLS库的解决方案和背景。这有助于澄清一些谜团。