Не удается безопасно связываться со сверстниками: нет общего алгоритма шифрования

Я - пользователь fedora 20. При клонировании репозитория я получил следующую ошибку: "Клонирование в" git_missions "... fatal: невозможно получить доступ к https://openhatch.org/git-mission-data/git/hithard/ ': не удается безопасно связываться с одноранговым узлом: нет общих алгоритмов шифрования. "

Я не понимаю, что делать. нужна помощь.

Ответ 1

Самое простое решение - просто использовать http вместо https:

$ git clone http://openhatch.org/git-mission-data/git/hithard/
Cloning into 'hithard'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
Checking connectivity... done.

Я думаю, что сама ошибка ( "нет общих алгоритмов шифрования" ) является точной; кажется, что сервер хочет использовать какой-то шип эллиптической кривой (TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256), который не поддерживается git базовой библиотекой SSL. Вы можете использовать что-то вроде wireshark для захвата SSL-подтверждения связи между git и сервером и просмотра параметров, передаваемых взад и вперед.

По крайней мере, в моей системе curl, похоже, не поддерживает этот шифр, а git использует libcurl для обработки соединений https/http.

Обновление

Итак, на основе моего последнего комментария к @mattdm, в котором я обнаружил, что curl в моей системе использует криптографическую библиотеку NSS, работает следующее:

curl --ciphers ecdhe_ecdsa_aes_128_gcm_sha_256 https://openhatch.org/

К сожалению, нет способа передать список шифров на git. Патч, чтобы сделать это, тривиален - вот одна версия, которую я только что сделал, но я не знаю, каковы шансы получая это принятым вверх по течению.

Ответ 2

К сожалению, нет способа передать список шифров на git

larsks упоминается в комментариях:

У меня был патч, принятый в git, который решает эту проблему

Это действительно было принято и слияние в git 2.5+ (Q2 2015)

См. commit f6f2a9e Ларс Келлогг-Стедман (larsks), 08 мая 2015 г.
(Слияние Junio ​​C Hamano - gitster - в совершить 39fa791, 22 мая 2015 г.)

http: добавьте поддержку для указания списка шифрования SSL

Расскажите git о новой опции, "http.sslCipherList", которая позволяет укажите список шифров, используемых при согласовании SSL-соединений.
Настройка может быть переопределена средой GIT_SSL_CIPHER_LISTпеременная.

git config справочная страница теперь включает в себя:

http.sslCipherList:

Список шифров SSL, используемых при согласовании SSL-соединения.
Доступные шифры зависят от того, была ли libcurl построена против NSS или OpenSSL и конкретной конфигурации используемой библиотеки криптографии.
Внутри это устанавливает параметр 'CURLOPT_SSL_CIPHER_LIST'; см. документацию libcurl для получения более подробной информации о формате этого списка.

Может быть переопределена переменной среды < GIT_SSL_CIPHER_LIST.
Чтобы заставить git использовать список шифрования по умолчанию libcurl и игнорировать любую явную опцию http.sslCipherList, установите 'GIT_SSL_CIPHER_LIST' в пустую строку.


Это может пригодиться в 2015 году:


Обновление августа 2015 года: git 2.6+ (Q3 2015) позволяет явно указать версию SSL:

http: добавить поддержку для указания версии SSL

См. commit 01861cb (14 августа 2015 г.) Elia Pinto (devzero2000).
Помощник: Эрик Саншайн (sunshineco).
(слияние Junio ​​C Hamano - gitster - в commit ed070a4, 26 августа 2015 г.)

http.sslVersion

Версия SSL, используемая при согласовании SSL-соединения, если вы хотите принудительно установить значение по умолчанию.
Доступная версия и версия по умолчанию зависят от того, была ли libcurl построена против NSS или OpenSSL и конкретной конфигурации используемой библиотеки крипто. Внутри это устанавливает параметр "CURLOPT_SSL_VERSION"; см. документацию libcurl для получения более подробной информации о формате этой опции и поддерживаемой версии ssl.
Фактически возможные значения этого параметра:

  • SSLv2
  • SSLv3
  • TLSv1
  • tlsv1.0
  • tlsv1.1
  • tlsv1.2

Может быть переопределена переменной среды < GIT_SSL_VERSION.
Чтобы заставить git использовать версию libsurl по умолчанию ssl и игнорировать любую явную опцию http.sslversion, установите 'GIT_SSL_VERSION' в пустую строку.