svn - 使用 SVN 的 SSL 握手失败

标签 svn centos ssl

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

SSL handshake failed: SSL error: A TLS warning alert has been received.

在其他机器上(所有这些都是在 CentOS 上完成的),我以前没有用它访问过服务器,提示我是 (R)eject, accept (t)emporarily or accept (p)ermanently?所提供证书的选项,然后我就可以成功连接了。我的结论是旧证书被缓存了,我需要获得一个新证书,但是我一直无法找到清除它的方法,并且在运行 svn 时再次收到此提示。

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

最佳答案

您没有指定遇到此问题的 CentOS 版本。

EL 6 附带的颠覆与 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 库在某些情况下更为特殊。两个最常见的:

  1. 远程站点使用 DES 等弱密码。
  2. 远程站点的证书名称与您指定的名称不匹配。

在名称不匹配的情况下,您可以使用 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

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

关于svn - 使用 SVN 的 SSL 握手失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11653044/

相关文章:

svn - 如何防止 checkout SVN 中的某些目录?

eclipse - 在现有工作空间上使用新的Eclipse时如何重新附加子剪辑

amazon-ec2 - 从私有(private) EBS AMI 启动实例后的 "Server Refused our key"

python - 如何为 Github 更新 httplib2 的 cacerts.txt?

linux - Apache2、虚拟主机、CentOs : root context and subcontext on one server

Git repo 规划问题

php - 执行 ping 命令在 Linux Centos 上不起作用

json - 加密 SSL/TLS 端到端

ssl - CloudFront 和 EC2 Origin 之间的 SSL 证书使用什么 Origin 和 ServerName?

svn - 进行svn remove和svn重命名后,获取适用的补丁