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


390

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

Я попытался установить для пульта дистанционного управления https://username@github.com/username/ExcelANT.git, но выдвигает запрос на ввод пароля, но ничего не предпринимает, как только я его ввел. https://username:<password>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
* Об установлении соединения () с портом 443 github.com (# 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, я расстроен.


Если я установлю http.sslVerify false, то соединение будет безопасным? и это хороший путь для использования? В промежутке мы используем брандмауэр pfsense. сейчас файл .gitconfig в профиле пользователя пуст.
Nullpointer

Ответы:


57

Не стесняйтесь пропустить этот ответ, если хотите исправить проблему с сертификатами. Этот ответ касается туннелирования 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-ing для 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.

Если вы хотите, вы можете прочитать больше об этом в этом блоге


Я разочаровался в том, чтобы заставить это работать, но еще раз взглянул на это, и заставил это работать. изменив .ssh / config на> Host ssh.github.com >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa и клонировав его с помощью git clone, git@ssh.github.com:oharab/log4vba.gitон быстро заработал и запустился.
Охараб

1
Я только опускаю голос, потому что ответ ниже более полезен, но, к сожалению, stackoverflow всегда ставит принятый ответ на первое место, даже если это был ответ только для одного обстоятельства.
Мяггард

1
В любом случае я обновил ответ, поскольку обнаружил, что туннелирование SSL через прокси-сервер https по-прежнему является лучшим решением, чем возиться с сертификатами HTTPS или отключать их, и в результате получается решение, которое все еще менее производительно, удобно для пользователя и менее безопасно. Ну, множество откровений доказывают, что я не прав, но я все равно придерживаюсь своего мнения в этом вопросе.
Питер Тиллеманс

523

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

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

Есть два решения:

  1. Собственно установите корневые сертификаты. Керл, ребята, извлекли для вас сертификаты от 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), и вы будете уязвимы для атаки «человек посередине» . Убедитесь, что вы полностью понимаете проблемы безопасности и свою модель угроз, прежде чем использовать это в качестве решения.

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    

9
Вам не нужно устанавливать curl, просто используйте wget:wget -O - http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_a fter=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
Deebster

38
Я знаю, что это Cygwin, но в случае, если кто-то попадет сюда с помощью Centos, это / etc / pki / tls / certs, куда должны идти .pem.
Хватит клеветать на Монику Челлио

2
У меня не сработало - однако у меня на пути нет c_rehash. Я попытался перезапустить мою оболочку. Я также должен был mkdir -p / usr / ssl / certs. Мне интересно, если моя установка Cygwin отличается или что-то не хватает? Кроме того, установка GIT_SSL_NO_VERIFY = true с последующим выполнением операции клонирования привела к этой ошибке: fatal: https://code.google.com/.../info/refs not found: did you run git update-server-info on the server?Может быть, она будет работать после перезагрузки?
Джефф Аксельрод

7
Этот ответ неверен. Просто установите ca-certificatesпакет cygwin , чтобы получить недостающие корневые сертификаты. Почему этот ответ получил так много взлетов?
Рурбан

32
Не отключайте проверку SSL-сертификата. Это случается слишком часто в инструментах и ​​коде приложения по всей отрасли. Это открывает вас для человека в середине атаки. Если вы собираетесь использовать SSL, то используйте его правильно.
Тим

430

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

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

git config --global http.sslVerify false

Это не позволит CURL подтвердить подлинность HTTPS.

Только для одного репозитория:

git config http.sslVerify false

17
Если вы не хотите редактировать свои глобальные настройки (например, все репозитории), исключите --global
Erin

57
Не могли бы вы добавить примечание о том, насколько это опасно?
хронический

26
это ужасная идея Есть причина, по которой сертификаты должны быть проверены. если вы не подтвердите сертификат как доверенный, тогда этот сертификат может быть сгенерирован кем-либо, и вы будете подвержены атаке посредника.
Марк Кэри

24
Не отключайте проверку SSL!
Тим

14
Для всех "не делай этого" люди: Конечно, это не самый безопасный подход вообще. НО, это гораздо лучший вариант, чтобы вообще не иметь SSL! Потому что некоторые люди запускают только свои частные простые git-серверы, это им подходит. Конечно, для любой реальной безопасности это не установка. Самая небезопасная вещь - отправка простых байтов через сеть.
Питер Стегнар,

109

Я хотел, чтобы 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:» в выходных данных.


12
Для меня это лучший ответ: он работает на Unix (на самом деле NetBSD), он влияет только на git, а не на что-либо еще в системе, и не требует прав root / администратора. Спасибо!
Эрик

1
Отлично, можно даже лучше. Я заменил свой старый /etc/ssl/certs/ca-certificates.crtна Ubuntu 8.04 LTS этим файлом, и он волшебным образом сработал!
Michael-O

1
@ Эрик, спасибо, что упомянул NetBSD, так как это означало, что я нашел этот ответ. NetBSD немного странный. Я установил пакет OpenSSL, но даже это не дает вам сертификаты, просто каталог местозаполнителей.
atomicules

+200 Более удивительно, это также работало на моей коробке Ubuntu. Не нужно отключать проверку сертификатов в git, просто сделайте это быстрое исправление.
Колин Д. Беннетт

11
Отличный ответ, вы можете пропустить ручное редактирование файла ~ / .gitconfig с помощью следующей команды:git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
Арон Ахмадиа

41

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

export GIT_SSL_NO_VERIFY=true

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


13
тот же эффект, что и в git config --global http.sslverify false
Dyno Fu

20
Это ОЧЕНЬ ОПАСНО! Весь смысл проверки SSL-сертификата состоит в том, чтобы защитить ваш код от подделки при передаче по HTTPS! Отключение этого означает, что злоумышленники могут вставлять уязвимости и другие неприятные вещи в ваш код, когда вы нажимаете и извлекаете его!

Если я установлю http.sslVerify false, то соединение будет безопасным? и это хороший путь для использования? В промежутке мы используем брандмауэр
pfsense

@ Рави соединение будет технически работать, да, но это однозначно не очень хорошая идея. Если и ваш мерзавец происхождения и на локальной машине , являются внутренними и под контролем вашей организации, это может быть сносно , но на комментарий user456814'S, отключение проверки открывает вас к атакам MITM.
Доктор J

40

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

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

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


Я думаю, это работает, потому что он не проверяет SSL для git://. Как указано в этом ответе выше , отключение проверки SSL является угрозой безопасности.
Данияр

5
@danijar причина, по которой это работает, в том, что он вообще не использует SSL . git://Протокол использует SSH, который использует SSH государственные и частные пары ключей для аутентификации и шифрования, вместо сертификата SSL.

11
@Cupcake git://вовсе не использовать SSH. См SSH - протокол и мерзавец протокол .
nyuszika7h

@ nyuszika7h ты прав. Я постоянно получаю git://путать с git@github.com:user/project.git, что SCP-иш синтаксис .

31

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

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

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

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


1
Git показывает CAfile: /etc/ssl/ca-bundle.crtcygwin, тогда как пакет cygwin ca-сертификаты устанавливается /usr/ssl/certs/ca-bundle.crt. Поэтому пришлось редактировать, ~/.gitconfigчтобы указать местоположение: [http]затемsslCAinfo = /usr/ssl/certs/ca-bundle.crt
maxpolk

@maxpolk: я бы сделал ссылку, но эффект тот же. Это явно ошибка в Cygwin Git, вы думали поднять билет? sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
dirkjot

На сегодняшний день 2013-5-23, Cygwin Git отлично работает через https: если у вас также есть / не забудьте установить Cygwin's ca-certificates.
Боббого

Я получил здесь от этого вопроса , который указал, что ответ можно найти здесь. Однако ни связанный ответ, ни этот ответ не работают для меня; TortoiseSVN продолжает выводитьerror: SSL certificate problem, verify that the CA cert is OK.
ИЛИ Mapper

Где именно мы устанавливаем установочные файлы cygwin из менеджера пакетов? Должны ли CA-сертификаты находиться в папке bin Git?
221b

16

Я знаю оригинальные списки вопросов 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-certificate-authority-issues/


Это отлично сработало для меня; вы, вероятно, должны сначала сделать резервную копию оригинала, как предполагает OP. Похоже, это происходит, когда Github обновляет свой сертификат, если вы работаете в системе, которая имеет более старую версию.
Эван Донован

На CentOS 5 я исправил это yum update openssl, что также обновляет ca-bundle.
raarts

если вы собираетесь использовать эту опцию, вам следует проверить хэш SHA-256 файла перед его использованием. Вы можете получить sha256sum для текущего файла с помощью некоторых других средств , чем вы настраиваете завитка (как браузер на другой машине , которая уже создана надежно) , а затем сравнить его с выходом , sha256sum /etc/pki/tls/certs/ca-bundle.crtчтобы убедиться , что вы получили право файл.
Кболино

16

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

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

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


14

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

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


ням! Это сработало для меня для старой установки (4.1.2) Red Hat Linux. Спасибо!
Джош

13

Если все, что вы хотите сделать, - это просто использовать 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 сертификатов сайтов, которым вы (не обязательно) доверяете.


8

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

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

Формула устанавливает CERT узелок на свою долю через:

share.install 'ca-bundle.crt'

shareМетод является просто псевдонимом /usr/local/share, а ротор-ч-расслоение обеспечиваются 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-bundle.

ОБНОВИТЬ

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

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


1
Вы также можете попробовать следующее: export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Maverick

Привет, у меня похожая проблема ( stackoverflow.com/questions/20939105/… ) и та же проблема появляется при попытке установить home-brew. Что я могу сделать в этом случае? Ввод "git config --system http.sslcainfo /usr/local/share/ca-bundle.crt" в моей консоли возвращает "ошибку: не удалось заблокировать файл конфигурации /Applications/Xcode.app/Contents/Developer/usr/etc/ gitconfig: нет такого файла или каталога ". Спасибо за помощь!
Матье

@ Матье, это довольно странно. Похоже, ваша система указывает на версию git относительно XCode. Каков результат запуска 'which git' с вашего терминала?
A-Dubb

7

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

git config --global http.sslVerify false


5

Я исправил эту проблему, используя 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

Это не сработало для меня - я все еще получаю ту же ошибку.
Холденли

4

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

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

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

apt-get установить ca-сертификаты


4

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

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

openssl s_client -connect github.com:443

3

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

machine github.com login myusername password mypass

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

https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj


Это проблема проверки сертификата, а не проверки подлинности - в некоторых операционных системах (включая ту, в которой работает OP) нет CA, выдающего новый сертификат github, включенного в список акций.
Чарльз Даффи

3

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

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

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


3
Это ОЧЕНЬ ОПАСНО! Весь смысл проверки SSL-сертификата состоит в том, чтобы защитить ваш код от подделки при передаче по HTTPS! Отключение этого означает, что злоумышленники могут вставлять уязвимости и другие неприятные вещи в ваш код, когда вы нажимаете и извлекаете его!

3

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

Я абсолютно отказался сделать свои операции 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

Сгенерируйте токен доступа из 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

2

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

Чтобы решить это:

  • Я обновил версию Curl, установленную на сервере. Скачайте последнюю версию на сайте Скачайте страницу curl и следите за процедурой установки.

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

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

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

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

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


1

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

% SystemRoot% \ system32 \ Drivers \ Etc \ хостов


1

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



0

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

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

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

    GIT_SSL_CAINFO = / usr / ssl / certs / ca-bundle.crt GIT_CURL_VERBOSE = 1 гит ...

    (Подробный вариант не нужен)

    Или сохранить опцию навсегда:

    конфиг --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    мерзавец ...


-2

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


-2

В системе 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

У меня недавно (июль 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

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

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.