Subversion 错误:svn:E120171:运行上下文时出错:SSL 通信期间发生错误

Subversion 错误:svn:E120171:运行上下文时出错:SSL 通信期间发生错误

我在结账时收到此错误。

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

我将前两种解决方案混合在一起,效果很好。

  1. 将文件 /usr/lib/ssl/openssl.cnf(在我的情况下是 .cnf)复制到我的主目录
  2. . 按照第一个答案中 Madeleine 的指示修改文件
  3. 导出OPENSSL_CONF =〜/ openssl.cnf

非常感谢你们二位 :)

答案4

我在工作中使用 Windows 时遇到了类似的问题,使用git svn clone命令时出现了一些神秘的错误:

运行上下文时出错...

我恢复到 git 版本 2.28.0(从版本 2.41.0),并且与旧 SVN 服务器的连接成功。

相关内容