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 --バージョン

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 リポジトリ プロバイダーを変更するかがあります。

これら 2 つのオプションが利用できない場合 (たとえば、他のユーザーのプロジェクトをチェックアウトしている場合や、クライアントのサーバーからクライアントのプロジェクトをチェックアウトする必要があるジョブに取り組んでいる場合) は、SSL が使用する TLS の最小バージョンをダウングレードすることを選択できます。TLS 1.0 は 20 年前のものであり、現在は非推奨となっているため、これによりセキュリティ リスクが発生することに注意してください。

この警告を念頭に置いて、SSL confファイルを変更することができます。このファイルがシステム上のどこにあるかは、次のように入力することで確認できます。

openssl version -d

ファイルを編集するには適切な権限が必要です。

[必要に応じて簡単に元に戻せるように、編集する前に conf ファイルのバックアップを作成しておくことをお勧めします]

ファイルの先頭に以下を追加します:

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

前述の 2 つのソリューションを組み合わせて作成しましたが、完璧に機能しました。

  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 サーバーへの接続が成功しました。

関連情報