Как преодолеть ошибку git `Неизвестная ошибка протокола SSL в соединении`

Я пытаюсь сделать клон репозитория, но затем я получаю сообщение об ошибке:

$ git clone --recursive https://some-url.git
Cloning into 'project'...
fatal: unable to access 'https://https://some-url.git/': Unknown SSL protocol error in connection to
some-url.git:443

Я читал, что репозитории git перешли на использование TLS1.0 и больше не поддерживают связь SSLv3 из-за уязвимости POODLE. Но я не знаю, означает ли это сообщение об ошибке, что мой клиент git знает, что он говорит только по SSLv3, а сервер отказывает, или что сервер знает только, что он говорит по SSLv3, а мой клиент запрещает. Если проблема в моем клиенте, как я могу настроить его для использования TLS; с другой стороны, если это сервер, как я могу решить?

Ошибка получена как на SourceTree, так и на scm git (консоль и графический интерфейс).

1 ответ

как я могу настроить его для использования TLS?

Git 2.5 (август 2015 г.) уже позволяет указывать список шифров, используемых при согласовании соединений SSL, с http.sslCipherList а также GIT_SSL_CIPHER_LIST,
(См. Невозможно безопасно общаться с одноранговым узлом: нет общих алгоритмов шифрования)

Начиная с 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 к пустой строке.


Настройка выше важна, поскольку GitHub сейчас (февраль 2018 г.) принудительно отключает слабые криптографические стандарты.

8 февраля 2018 года мы начнем отключать следующее:

  • TLSv1 / TLSv1.1: это относится ко всем HTTPS-соединениям, включая веб-соединения, API и git-соединения с https://github.com/ и https://api.github.com/.
  • diffie-hellman-group1-sha1: это относится ко всем SSH-соединениям с github.com
  • diffie-hellman-group14-sha1: это относится ко всем SSH-соединениям с github.com

Git 2.18 (Q2 2018) теперь может использовать TLSv1.3:
Когда построено с более свежим cURL, GIT_SSL_VERSION теперь можно указать tlsv1.3 "как его значение.

См. Коммит d81b651 (29 марта 2018 г.) от Loganaden Velvindron ( loganaden )
(Объединено Юнио С Хамано - gitster - в коммите 9b59d88, 11 апреля 2018 г.)

http: разрешить использование TLS 1.3

Добавить опцию tlsv1.3 в http.sslVersion в дополнение к существующему tlsv1.[012] опции.
libcurl поддерживает это с 7.52.0.

Для этого требуется OpenSSL 1.1.1 с включенным TLS 1.3 или curl построен с последними версиями NSS или BoringSSL в качестве бэкэнда TLS.

Другие вопросы по тегам