Не удается безопасно связываться со сверстниками: нет общего алгоритма шифрования
Я - пользователь 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' в пустую строку.