![Subversion 错误:svn:E120171:运行上下文时出错:SSL 通信期间发生错误](https://linux22.com/image/1601095/Subversion%20%E9%94%99%E8%AF%AF%EF%BC%9Asvn%EF%BC%9AE120171%EF%BC%9A%E8%BF%90%E8%A1%8C%E4%B8%8A%E4%B8%8B%E6%96%87%E6%97%B6%E5%87%BA%E9%94%99%EF%BC%9ASSL%20%E9%80%9A%E4%BF%A1%E6%9C%9F%E9%97%B4%E5%8F%91%E7%94%9F%E9%94%99%E8%AF%AF.png)
我在结账时收到此错误。
svn: E170013: Unable to connect to a repository at URL 'https://some.host/some/repo/'
svn: E120171: Error running context: An error occurred during SSL communication
$svn --version
svn, version 1.10.4 (r1850624)
compiled Jul 28 2019, 02:44:06 on x86_64-pc-linux-gnu
Copyright (C) 2019 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository access (RA) modules are available:
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
- using serf 1.3.9 (compiled with 1.3.9)
- handles 'http' scheme
- handles 'https' scheme
The following authentication credential caches are available:
* Plaintext cache in /home/kusan/.subversion
* Gnome Keyring
* GPG-Agent
* KWallet (KDE)
请帮我解决这个问题。我刚刚安装了 Debian 10。在 Debian 9 中它运行良好。提前致谢。
答案1
您可能遇到此错误,因为 TLS 的最低版本默认高于 Subversion 服务器使用的版本。
如果您拥有该服务器,您可以选择升级 Subversion 服务器的 TLS 版本;如果您为 Subversion 存储库提供商付费,则可以更改提供商。
如果您无法使用这两个选项(例如,您正在查看其他人的项目,或者您正在从事的工作需要您从其服务器查看客户端的项目),那么您可以选择降级 SSL 使用的最低 TLS 版本。您应该注意,这会带来一些安全风险,因为 TLS 1.0 已有 20 年历史,现在已弃用。
记住这个警告,你可以修改你的 SSL conf 文件。你可以输入以下命令找到此文件在系统上的位置
openssl version -d
您需要正确的权限才能编辑该文件。
[我喜欢在编辑任何配置文件之前对其进行备份,以便必要时可以轻松地恢复]
在文件顶部添加:
openssl_conf = default_conf
在文件末尾添加以下内容:
[ default_conf ]
ssl_conf = ssl_sect
[ssl_sect]
system_default = ssl_default_sect
[ssl_default_sect]
MinProtocol = TLSv1
CipherString = DEFAULT:@SECLEVEL=1
这表明 TLS 版本 1.0 是可接受的最低版本。如果 1.1 版本可以接受,则将 TLSv1 更改为 TLSv1.1
答案2
将您的 openssl.conf 复制到:
/home/username/openssl.conf
改变这个:
# MinProtocol = TLSv1.1
MinProtocol = TLSv1
然后:
export OPENSSL_CONF=/home/username/openssl.cnf
svn ls https://subversion/svn/path
答案3
我将前两种解决方案混合在一起,效果很好。
- 将文件 /usr/lib/ssl/openssl.cnf(在我的情况下是 .cnf)复制到我的主目录
- . 按照第一个答案中 Madeleine 的指示修改文件
- 导出OPENSSL_CONF =〜/ openssl.cnf
非常感谢你们二位 :)
答案4
我在工作中使用 Windows 时遇到了类似的问题,使用git svn clone
命令时出现了一些神秘的错误:
运行上下文时出错...
我恢复到 git 版本 2.28.0(从版本 2.41.0),并且与旧 SVN 服务器的连接成功。