2013-12-22 1 views
4

Невозможно использовать git:Сделать мерзавец вернуться к SSLv3 когда TLSv1 терпит неудачу с "Пропущенные Unknown Record"

git clone https://github.com/foo/bar 

терпит неудачу:

fatal: unable to access 'https://github.com/foo/bar': Unknown SSL protocol error in connection to github.com:443 

Как я могу заставить git использовать SSLv3? Я попытался скомпилировать git из источника, но нет настройки за пределами: --with-openssl (по умолчанию). Добавление следующей строки перед строкой 408 в remote-curl.c не работает либо:

curl_easy_setopt(slot->curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_SSLv3); 

Вот некоторые подсказки:

  • случай 1: Когда мой браузер пытается добраться до https://github.com/foo/bar, это первый пытается использовать TLSv1. Рукопожатие, похоже, в порядке: обмен ключами сервера, приветствие сервера (в Wireshark). Но это означает «Игнорированная неизвестная запись» с сервера и, наконец, «Сброс соединения» с сервера. Затем новое соединение, но с SSLv3, и все прекрасно (см. picture).

  • корпус 2: curl не удается с помощью TLSv1

    curl https://github.com/foo/bar 
    

    терпит неудачу:

    curl: (35) Unknown SSL protocol error in connection to github.com:443 
    

    Установка --sslv3 исправляет проблему.

  • корпус 3: Возьмите это один

    sudo add-apt-repository ppa:cassou/emacs 
    

    терпит неудачу:

    pycurl.error: (35, 'gnutls_handshake() failed: A TLS packet with unexpected length was received.') 
    

Edit: завиток 7.22.0 (i686-ПК-Linux-гну) Libcurl /7.22.0 OpenSSL/1.0.1.

Edit: отладочная информация

Cloning into 'bar'... 
* Couldn't find host github.com in the .netrc file; using defaults 
* About to connect() to github.com port 443 (#0) 
* Trying 192.30.252.130... * Connected to github.com (192.30.252.130) port 443 (#0) 
* successfully set certificate verify locations: 
* CAfile: none 
    CApath: /etc/ssl/certs 
* Unknown SSL protocol error in connection to github.com:443 
* Closing connection #0 
fatal: unable to access 'https://github.com/foo/bar/': Unknown SSL  protocol error in connection to github.com:443 
+1

Какую версию Git вы используете? Какая версия завитка? Какая ОС? Linux? Окна? Cygwin? – VonC

+0

Пожалуйста, добавьте отладочную информацию, используя 'GIT_CURL_VERBOSE = 1' –

+0

Я загрузил исходный код git из github. curl 7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1. – Yasser

ответ

4

Update август 2015: Гит 2.6+ (Q3 2015) позволит указать SSL версии явно:

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

См. commit 01861cb (14 августа 2015 г.) Elia Pinto (devzero2000).
Продвинутый пользователь: Eric Sunshine (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» t переменной.
Чтобы заставить git использовать версию ssl по умолчанию libcurl и игнорировать любую явную опцию http.sslversion, установите 'GIT_SSL_VERSION' в пустую строку.


Оригинальный ответ Декабрь: 2013

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

export HTTP_PROXY=http://user:[email protected]:port 
export HTTPS_PROXY=http://user:[email protected]:port 
export NO_PROXY=.mycompany.com 

Вы также можете setup a ~/.netrc file учетные данные GitHub ,

Убедитесь, что ваш git config http.sslcainfo делает ссылку вашего /path/to/git/bin/curl-ca-bundle.crt, для того, чтобы завиток, чтобы иметь возможность проверить сертификат, связанный с сервером GitHub.


Один из способов, если протокол HTTPS действительно не работает, является использование SSH URL-адрес

git clone ssh://[email protected]:project.git 

(если вы сгенерировали частный и открытый ключ первого, и прописано, что открытый ключ к вашему GitHub)

+0

Спасибо. Это обходное решение сработало. Но у меня такая же проблема с «bower install jquery», которая не выполняется: повторить запрос https://bower.herokuapp.com/packages/jquery с ECONNRESET. (Эта фотография была из этой команды, а не git). Я могу получить доступ к этой ссылке без прокси-сервера, но с SSLv3. – Yasser

+1

@YasserMZadeh странно. Я видел это с https://github.com/bower/bower/issues/631, связанным с сетевыми проблемами. – VonC