Сертификат SSL отклонен при попытке доступа к GitHub через HTTPS через брандмауэр

Я застрял за брандмауэром, поэтому мне пришлось использовать HTTPS для доступа к моему репозиторию GitHub. Я использую Cygwin 1.7.7 на Windows XP.

Я пытался установить пульт дистанционного управления на https://username@github.com/username/ExcelANT.git, но выдвигал запрос на ввод пароля, но ничего не делал, как только я его ввел. https://username:github.com/username/ExcelANT.git и клонирование пустого репозитория с нуля, но каждый раз, когда он выдает мне одну и ту же ошибку,

ошибка: проблема с сертификатом SSL, проверьте, что сертификат CA в порядке. Подробности:
ошибка: 14090086: подпрограммы SSL: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата при доступе https://github.com/username/ExcelANT.git/info/refs

Включение GIT_CURL_VERBOSE=1 дает мне

* О подключении () к порту 443 github.com (# 0)
* Попытка 207.97.227.239 ... * Успешно установлены местоположения проверки сертификата:
* CAfile: нет
CApath: / usr / ssl / certs
* Проблема с сертификатом SSL, убедитесь, что сертификат CA в порядке. Подробности:
ошибка: 14090086: подпрограммы SSL: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата
* Истекает очистка
* Закрытие соединения № 0
* О подключении () на порт github.com 443 (# 0)
* Попытка 207.97.227.239 ... * успешно установить местоположения проверки сертификата:
* CAfile: нет
CApath : / usr / ssl / certs
* Проблема с сертификатом SSL, проверьте, что сертификат CA в порядке. Подробности:
ошибка: 14090086: подпрограммы SSL: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата
* Истек срок очистки
* Закрытие соединения № 0
Ошибка: сертификат SSL проблема, проверьте, что сертификат CA в порядке. Сведения:
ошибка: 14090086: процедуры SSL: SSL3_GET_SERVER_CERTIFICATE: сбой проверки сертификата при доступе к https://github.com/username/ExcelANT.git/info/refs

fatal: HTTP request failed

Это проблема с моим брандмауэром, Cygwin или чем-то другим?

Я не установил HTTP-прокси в конфигурации Git, однако это ISA-сервер, для которого требуется проверка подлинности NTLM, а не базовая. так что, если никто не знает, как заставить git использовать NTLM, я scuppered.

373
задан oharab 18 April 2014 в 20:03
поделиться

30 ответов

Не стесняйтесь пропустить этот ответ, если хотите решить проблему с сертификатами. Этот ответ касается туннелирования ssh через брандмауэр, который, на мой взгляд, является лучшим решением для работы с брандмауэрами / прокси-серверами.

Существует лучший способ, чем использование доступа по протоколу http, а именно использование службы ssh, предлагаемой github на порту 443 сервера ssh.github.com.

Мы используем инструмент под названием штопор. Это доступно как для CygWin (через настройку с домашней страницы cygwin), так и для Linux с использованием вашего любимого инструмента упаковки. Для MacOSX это доступно из macports и варится по крайней мере.

Командная строка выглядит следующим образом:

$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>

Proxyhost и proxyport - это координаты прокси https. Targethost и targetport - это местоположение хоста для туннелирования. Authfile представляет собой текстовый файл с 1 строкой, содержащей имя пользователя и пароль прокси-сервера, разделенные двоеточием

, например:

abc:very_secret

Установка для использования «обычного» протокола ssh для связи git

Добавив это в ~/.ssh/config, этот трюк можно использовать для обычных соединений ssh.

Host github.com
  HostName ssh.github.com
  Port 443
  User git
  ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth

Теперь вы можете проверить его работоспособность, выполнив команду ssh-ging для gitproxy

pti@pti-laptop:~$ ssh github.com
PTY allocation request failed on channel 0
Hi ptillemans! You've successfully authenticated, but GitHub does not provide shell access.
       Connection to github.com closed.
pti@pti-laptop:~$

(Примечание: если вы никогда ранее не входили в github, ssh попросит добавить ключ сервера в файл известных хостов. Если вы параноик, рекомендуется проверить отпечаток RSA на тот, который указан на сайте github, куда вы загрузили свой ключ).

Небольшой вариант этого метода - это случай, когда вам нужен доступ к хранилищу с другим ключом, например, отделить вашу личную учетную запись от вашей профессиональной учетной записи.

# 
# account dedicated for the ACME private github account 
#
Host acme.github.com
  User git
  HostName ssh.github.com
  Port 443
  ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
  IdentityFile ~/.ssh/id_dsa_acme

наслаждайтесь!

Мы используем его уже много лет как на Linux, Mac, так и на Windows.

Если вы хотите, вы можете узнать больше об этом в этом блоге

56
ответ дан yourcomputergenius 18 April 2014 в 20:03
поделиться

Для тех, кто использует Msys / MinGW GIT, добавьте это

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
-2
ответ дан John Chain 18 April 2014 в 20:03
поделиться

Сгенерируйте токен доступа из Github и сохраните его, так как он больше не появится.

git -c http.sslVerify=false clone https://<username>:<token>@github.com/repo.git

или,

git config --global http.sslVerify false
git clone https://github.com/repo.git
0
ответ дан Naseer-shaik 18 April 2014 в 20:03
поделиться

У меня недавно (июль 2014 г.) была похожая проблема, и я обнаружил в OS X (10.9.4), что срок действия сертификата «DigiCert High Assurance EV Root CA» истек (хотя у меня был и другой, срок действия которого еще не истек).

  1. Открытый доступ через брелок
  2. Поиск сертификатов для «DigiCert»
  3. Меню «Просмотр»> Показать сертификаты с истекшим сроком

Я нашел два сертификата с именем «DigiCert High» Assurance EV Root CA ", срок действия которого истекает ноябрь 2031 г., срок действия истек в июле 2014 г. (несколько дней назад). Удаление устаревшего сертификата решило проблему для меня.

Надеюсь, это поможет.

-2
ответ дан craigb 18 April 2014 в 20:03
поделиться

В системе Mac OSX 10.5 я смог заставить это работать простым способом. Во-первых, запустите процедуры github и тест, который работал нормально для меня, показывая, что мой сертификат на самом деле был в порядке. https://help.github.com/articles/generating-ssh-keys

ssh -T git@github.com

Тогда я наконец заметил еще один формат URL для удаленных. Я попробовал другие, выше, и они не работали. http://git-scm.com/book/ch2-5.html

git@github.com:MyGithubUsername/MyRepoName.git

Простой «git push myRemoteName» отлично работал!

-2
ответ дан AnneTheAgile 18 April 2014 в 20:03
поделиться

Я просто отключил аутентификацию с помощью SSL-сертификата и использовал простой логин и пароль для входа в систему, как показано ниже enter image description here

1
ответ дан 0x3bfc 18 April 2014 в 20:03
поделиться

Я попробовал все, в конце концов я посмотрел в файле hosts и там была случайная запись для github Удаление псевдонима исправило проблему

% systemroot% \ system32 \ drivers \ etc \ hosts

1
ответ дан GenericEventHandler 18 April 2014 в 20:03
поделиться

Улучшите решение RouMao, временно отключив проверку GIT / curl ssl в Windows cmd:

set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443

Преимущество этого решения в том, что оно действует только в текущем окне cmd.

3
ответ дан Marshal 18 April 2014 в 20:03
поделиться

Попробуйте использовать файл .netrc, он будет аутентифицироваться через https. Создайте файл вызова .netrc в своем домашнем каталоге и поместите его в него:

machine github.com login myusername password mypass

См. Этот пост для получения дополнительной информации:

https://plus.google. ком / и / 0/104462765626035447305 / сообщений / WbwD4zcm2fj

3
ответ дан Travis Reeder 18 April 2014 в 20:03
поделиться

при разбое pi у меня было

pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git Клонирование в «Dropbox-Uploader» ... ошибка: Проблема с сертификатом SSL CA (путь? Права доступа?) При доступе к http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs неустранимый: HTTP-запрос не выполнен

, поэтому укажите

sudo apt-get install ca-certificates

затем

git clone http://github.com/andreafabrizi/Dropbox-Uploader.git  

работал

4
ответ дан PaRiMaL RaJ 18 April 2014 в 20:03
поделиться

Примечание. Отключение проверки SSL имеет последствия для безопасности . Он позволяет атаковать Man in the Middle, когда вы используете Git для передачи данных по сети. Убедитесь, что вы полностью понимаете последствия для безопасности, прежде чем использовать это в качестве решения. Или, что еще лучше, установите корневые сертификаты.

Один из способов - отключить проверку SSL CERT:

git config --global http.sslVerify false

Это не позволит CURL проверить подлинность HTTPS-сертификации.

Только для одного хранилища:

git config http.sslVerify false
420
ответ дан Braiam 18 April 2014 в 20:03
поделиться

Мне нужно было две вещи:

  1. перейти к cygwin setup и включить пакет « ca-Certificates » (он находится под Net ) (как указано в другом месте).

  2. Сообщите git, где найти установленные сертификаты:

    GIT_SSL_CAINFO = / usr / ssl / certs / ca-bundle.crt GIT_CURL_VERBOSE = 1 git ...

    (Подробная опция не нужна)

    Или постоянное сохранение опции:

    git config --global http.sslCAinfo / usr / ssl / certs / ca -bundle.crt

    git ...

0
ответ дан user2896631 18 April 2014 в 20:03
поделиться

У меня возникла та же проблема с Solaris Express 11. Это заняло у меня некоторое время, но я смог найти, где нужно разместить сертификаты. Согласно /etc/openssl/openssl.cnf, путь к сертификатам - / etc / openssl / certs. Я разместил сертификаты, сгенерированные с помощью вышеприведенного совета Алексея.

Вы можете проверить, что все работает, используя openssl в командной строке:

openssl s_client -connect github.com:443
4
ответ дан svassr 18 April 2014 в 20:03
поделиться

Обратите внимание, что для того, чтобы это заработало (установка RVM на CentOS 5.6), мне нужно было выполнить следующее:

export GIT_SSL_NO_VERIFY=true

и после этого стандартную процедуру установки для сворачивание установщика RVM в bash сработало:)

41
ответ дан seanp2k 18 April 2014 в 20:03
поделиться

Чтобы клонировать окна при настройке SSL, установите значение false:

    git -c http.sslVerify=false clone http://example.com/e.git

Если вы хотите клонировать без , нарушая ваши глобальные настройки.

14
ответ дан FlavorScape 18 April 2014 в 20:03
поделиться

У меня была такая же проблема. Импорт сертификата или команда для отмены ssl-проверки не работали. Оказалось, что срок действия пароля для сетевого прокси истек. Была запись о настройке прокси. в файле .gitconfig присутствует в моем профиле пользователя Windows. Я просто удалил всю запись, и она снова начала работать.

-2
ответ дан sap 18 April 2014 в 20:03
поделиться

Самый популярный ответ (от Алексея Вишенцева) гласит:

Проблема в том, что в вашей системе не установлен ни один из сертификатов удостоверяющего центра. И эти сертификаты не могут быть установлены с помощью cygwin setup.exe.

Однако, последнее утверждение неверно (сейчас или всегда было, я не знаю).

Все, что вам нужно сделать, - это перейти к настройке cygwin и включить пакет ca-Certificates (он находится в сети). Это помогло мне.

31
ответ дан dirkjot 18 April 2014 в 20:03
поделиться

Очень простое решение: заменить https: // на git: //

Использовать git: //the.repository вместо https: //the.repository и будет работать.

У меня была эта проблема в Windows с TortoiseGit, и это решило ее.

40
ответ дан klodoma 18 April 2014 в 20:03
поделиться

В CentOS 5.x простой yum update openssl обновил пакет openssl, который обновил системный файл ca-bundle.crt и исправил проблему для меня.

То же самое может быть верно для других распределений.

14
ответ дан Mrchief 18 April 2014 в 20:03
поделиться

Я столкнулся с той же проблемой при настройке Git на платформе совместной разработки, которой я должен управлять.

Чтобы решить эту проблему:

  • Я обновил версию Curl, установленную на сервере. Загрузите последнюю версию на веб-сайте Загрузите страницу curl и следуйте процедуре установки Процедуры установки curl

  • Получите сертификат орган, который доставляет сертификат для сервера.

  • Добавьте этот сертификат в файл CAcert, используемый curl. На моем сервере он находится в /etc/pki/tls/certs/ca-bundle.crt.

  • Сконфигурируйте git для использования этого файла сертификата, отредактировав файл .gitconfig и установив путь sslcainfo. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • На клиентском компьютере вы должны получить сертификат и настроить файл .gitconfig.

Надеюсь, это поможет некоторым из вас.

2
ответ дан Mrchief 18 April 2014 в 20:03
поделиться

Вы проверили свое время?

Я абсолютно отказался сделать свои операции git небезопасными, и после того, как я попробовал все, что здесь упоминалось, меня поразило, что одной из возможных причин, по которой сертификаты не проходят проверку, является то, что даты неверно (либо дата окончания действия сертификата, либо местные часы).

Вы можете легко проверить это, набрав date в терминале. В моем случае (новый Raspberry Pi) локальные часы были установлены на 1970, поэтому простой ntpdate -u 0.ubuntu.pool.ntp.org все исправил. Для rPi я бы также рекомендовал вам поставить следующий скрипт в ежедневную работу cron (скажем, /etc/cron.daily/ntpdate):

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1
3
ответ дан Deiu 18 April 2014 в 20:03
поделиться

Мне нужны были сертификаты только для Cygwin и git, поэтому я сделал то, что написал @esquifit. Однако мне пришлось выполнить шаг 5 вручную, c_rehash не был доступен в моей системе. Я следовал этому руководству: Установка сертификатов CA в платформу OpenSSL .

0
ответ дан Sonata 18 April 2014 в 20:03
поделиться

Если вы использовали ОС на базе Debian, вы можете просто запустить

apt-get install ca-сертификаты

4
ответ дан Patrick 18 April 2014 в 20:03
поделиться

Я исправил эту проблему, используя apt-cyg (отличный установщик, похожий на apt-get), чтобы легко загрузить CA-сертификаты (включая Git и многие другие):

apt-cyg install ca-certificates

Примечание : сначала следует установить apt-cyg. Вы можете сделать это из командной строки Windows:

cd c:\cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim

Закрыть Windows cmd и открыть Cygwin Bash:

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin
5
ответ дан Steven Penny 18 April 2014 в 20:03
поделиться

Я знаю оригинальные списки вопросов Cygwin, но вот решение для CentOS:

curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

Источник: http://eric.lubow.org/2011/security/fixing-centos -root-сертификат-орган-вопросы /

16
ответ дан Anne 18 April 2014 в 20:03
поделиться

Я хотел, чтобы Git использовал обновленный комплект сертификатов без замены того, который использует вся моя система. Вот как заставить Git использовать определенный файл в моем домашнем каталоге:

mkdir ~/certs
curl http://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem

Теперь обновите .gitconfig, чтобы использовать его для проверки в одноранговом режиме:

[http]
sslCAinfo = /home/radium/certs/cacert.pem

Примечание. Я использую абсолютный путь. Git здесь не расширяет путь, поэтому вы не можете использовать ~ без уродливого кладжа. Кроме того, вы можете пропустить файл конфигурации и установить путь через переменную окружения GIT_SSL_CAINFO.

Чтобы устранить эту проблему, установите GIT_CURL_VERBOSE=1. Путь к файлу CA, который использует Git, будет показан в строках, начинающихся с «CAfile:».

109
ответ дан kenchilada 18 April 2014 в 20:03
поделиться

Проблема в том, что в вашей системе не установлен ни один из сертификатов удостоверяющего центра. И эти сертификаты не могут быть установлены с помощью cygwin setup.exe.

Обновление: Установите пакет Net / ca-Certificates в cygwin (спасибо dirkjot)

Существует два решения:

  1. Фактически установите root сертификаты. Ребята из Curl извлекли для вас сертификаты из Mozilla .

    cacert.pem файл - это то, что вы ищете. Этот файл содержит> 250 сертификатов CA (не знаю, как доверять этому количеству госзакупок). Вам необходимо скачать этот файл, разделить его на отдельные сертификаты, поместить их в / usr / ssl / certs (ваш CApath) и проиндексировать их.

    Вот как это сделать. С помощью cygwin setup.exe установите пакеты curl и openssl и выполните:

    $ cd /usr/ssl/certs
    $ curl http://curl.haxx.se/ca/cacert.pem |
      awk '{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'
    $ c_rehash
    

    Важно : Для использования c_rehash необходимо установить также openssl-perl.

  2. Игнорировать проверку сертификата SSL.

    ВНИМАНИЕ: Отключение проверки сертификата SSL имеет последствия для безопасности. Без проверки подлинности соединений SSL / HTTPS злоумышленник может выдать себя за доверенную конечную точку (такую ​​как GitHub или какой-либо другой удаленный хост Git), и вы будете уязвимы для атаки Man-in-the-Middle . Убедитесь, что вы полностью понимаете проблемы безопасности и своей модели угроз, прежде чем использовать это в качестве решения.

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    
514
ответ дан Braiam 18 April 2014 в 20:03
поделиться

Если вы работаете в Mac OS X, вы можете установить пакет ca-cert-bundle с помощью homebrew:

$ brew install curl-ca-bundle
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

Формула устанавливает пакет сертификатов в вашу общую папку. via:

share.install 'ca-bundle.crt'

Метод share является просто псевдонимом /usr/local/share, а curl-ca-bundle предоставляется в Mozilla. Это то, на что вы видите ссылки во многих вопросах. Надеюсь, что это поможет, поскольку не совсем понятно, как подойти к этому на Mac OS X. brew install curl тоже не принесет вам много пользы, так как это только бочонок и не будет связан (работает which curl всегда будет выводить /usr/bin/curl, что по умолчанию поставляется с вашей ОС). Этот пост также может иметь некоторую ценность .

Вам, конечно, нужно будет отключить SSL перед установкой homebrew, так как это git-репо. Просто делайте то, что говорит curl, когда происходит ошибка во время проверки SSL, и:

$ echo insecure >> ~/.curlrc

Как только вы установите homebrew вместе с curl-ca-bundle, удалите .curlrc и попробуйте клонировать репо на github. Убедитесь, что ошибок нет, и вам будет хорошо.

ПРИМЕЧАНИЕ: Если вы прибегаете к .curlrc, удалите его из системы, как только вы закончите тестирование. Этот файл может вызвать серьезные проблемы, поэтому используйте его во временных целях и с осторожностью. brew doctor будет жаловаться, если вы забудете удалить его из своей системы).

ПРИМЕЧАНИЕ: Если вы обновите свою версию git, вам нужно будет повторно запустить эту команду, так как настройки вашей системы будут стерты (они сохраняются относительно двоичного файла git в зависимости от версии). [тысячу сто сорок одна]

Итак, после запуска:

$ brew update
$ brew upgrade

Если вы получите новую версию git, просто перезапустите:

$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

И все будет готово.

Наконец, если у вас есть новая версия git, выполните:

$ git config -l --system

должно выдать вам ошибку в соответствии с

fatal: unable to read config file '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig'

это ваша совет, который нужно указать git, где находится пакет Mozilla.

ОБНОВЛЕНИЕ:

.curlrc может или не может быть решением вашей проблемы. В любом случае, просто установите пакет Mozilla, установленный на вашем компьютере, независимо от того, нужно ли вам загружать его вручную или нет. Вот что здесь важно. Как только вы получите пакет, вы готовы. Просто запустите команду git config и укажите git на пакет ca.

ОБНОВЛЕНИЕ

Мне недавно пришлось добавить:

export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt в мой файл точек .zshenv, так как я использую zsh. опция git config работала в большинстве случаев, но при использовании github по SSL (например, rvm get stable) я все еще сталкивался с проблемами сертификатов. @Maverick указал на это в своем комментарии, но на тот случай, если кто-то пропустит это или предположит, что ему не обязательно экспортировать эту переменную среды в дополнение к выполнению команды git config --system..... Спасибо и надеюсь, что это поможет.

ОБНОВЛЕНИЕ

Похоже, что curl-ca-bundle был недавно удален из доморощенного . Здесь есть рекомендация .

Вы хотите добавить некоторые файлы в:

$(brew --prefix)/etc/openssl/certs

8
ответ дан Community 18 April 2014 в 20:03
поделиться

Если все, что вы хотите сделать, это просто использовать git-клиент Cygwin с github.com, то есть гораздо более простой способ без необходимости загружать, извлекать, преобразовывать, разбивать файлы сертификатов. Действуйте следующим образом (я предполагаю, что Windows XP с Cygwin и Firefox)

  1. В Firefox перейдите на страницу github (любая)
  2. щелкните значок github в адресной строке. для отображения сертификата
  3. Нажмите «дополнительная информация» -> «показать сертификат» -> «детали» и выберите каждый узел в иерархии, начиная с самого верхнего; для каждого из них нажмите «Экспорт» и выберите формат PEM:
    • GTECyberTrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. Сохраните вышеуказанные файлы где-нибудь на локальном диске, измените расширение на .pem и переместите их в / usr / ssl / certs в вашей установке Cygwin (Windows: c: \ cygwin \ ssl \ certs)
  5. (необязательно) Запустите c_reshash из bash.

Вот и все.

Конечно, это устанавливает только одну иерархию сертификатов, ту, которая вам нужна для github. Конечно, вы можете использовать этот метод с любым другим сайтом без необходимости устанавливать 200 сертификатов сайтов, которым вы (не обязательно) доверяете.

13
ответ дан DotJava 18 April 2014 в 20:03
поделиться

Можно попробовать эту команду в Терминал :

конфигурация мерзавца - глобальная http.sslVerify ложь

1
ответ дан 22 November 2019 в 23:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: