Как преодолеть ошибку 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.