Невозможно безопасно общаться с одноранговым узлом: нет общих алгоритмов шифрования
Я пользователь fedora 20. При клонировании хранилища я получил следующую ошибку: "Клонирование в" git_missions "... fatal: невозможно получить доступ к" https://openhatch.org/git-mission-data/git/hithard/": Невозможно безопасно связаться с одноранговый: нет общих алгоритмов шифрования. "
Я не понимаю, что делать? Нужна помощь.
2 ответа
Самое простое решение - просто использовать 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), который не поддерживается базовой библиотекой SSL git. Вы можете использовать что-то вроде wireshark
чтобы захватить рукопожатие SSL между git и сервером и увидеть параметры, передаваемые туда и обратно.
По крайней мере, в моей системе, curl
похоже, не поддерживает этот шифр, и git
использования libcurl
для обработки соединений https / http.
Обновить
Итак, основываясь на моем последнем комментарии к @mattdm, в котором я обнаружил, что curl
в моей системе используется криптографическая библиотека NSS, работает следующее:
curl --ciphers ecdhe_ecdsa_aes_128_gcm_sha_256 https://openhatch.org/
К сожалению, нет никакого способа передать список шифров git
, Патч, чтобы сделать это, тривиален - вот одна версия, которую я только что сделал - но я не знаю, какова вероятность того, что это будет принято в апстриме.
К сожалению, нет никакого способа передать список шифров в git
larsks
упоминается в комментариях:
Я получил патч для Git, который решает эту проблему
Это было действительно принято, и объединить в Git 2.5+ (2 квартал 2015 г.)
Смотрите коммит f6f2a9e Ларса Келлог-Стедмана ( larsks
), 08 мая 2015 г.
(Объединено Юнио С Хамано - gitster
- в комитете 39fa791 от 2 2 мая 2015 г.)
http
: добавить поддержку для указания списка шифров SSLНаучите Git о новой опции, "
http.sslCipherList
", который позволяет указать список шифров, которые будут использоваться при согласовании соединений SSL.
Настройка может быть отмененаGIT_SSL_CIPHER_LIST
переменная окружения.
git config
Страница man теперь включает в себя:
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 год, какие наборы шифров SSL/TLS следует использовать в среде HTTPS с высоким уровнем безопасности? "
- " Усиление шифрования SSL вашего веб-сервера "
- Проблемы Ника Крэйвера с SSL/TLS и производительностью, с исправленной в настоящее время проблемой безопасности ( уязвимость Logjam Attack, связанная с уязвимостью в развертывании обмена ключами Диффи-Хеллмана, теперь слабая).
Обновление август 2015: Git 2.6+ (3 квартал 2015 года) позволит явно указать версию SSL:
http
: добавить поддержку для указания версии SSL
См. Коммит 01861cb (14 августа 2015 г.) от Elia Pinto ( devzero2000
)
Помогает: Эрик Саншайн ( sunshineco
)
(Объединено Юнио С Хамано - gitster
- в комм. ред. 070a4, 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 использовать ssl-версию libcurl по умолчанию и игнорировать любые явныеhttp.sslversion
опцию, установите 'GIT_SSL_VERSION' в пустую строку.