Сертификат SSL отклонен при попытке доступа к GitHub через HTTPS через брандмауэр - PullRequest
373 голосов
/ 23 сентября 2010

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

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

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

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

* О программеconnect () к порту 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, убедитесь, что сертификат ЦС в порядке.Сведения:
ошибка: 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, я в замешательстве.

Ответы [ 29 ]

13 голосов
/ 06 августа 2011

Если все, что вы хотите сделать, это просто использовать 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 голосов
/ 28 марта 2013

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

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

Формула устанавливает пакет сертификатов в вашу папкучерез:

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 был недавно удален из homebrew .Здесь есть рекомендация .

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

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

5 голосов
/ 01 июня 2013

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

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

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

openssl s_client -connect github.com:443
4 голосов
/ 15 марта 2014

при разбое 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-запрос не выполнен

, поэтому id

sudo apt-get install ca-certificates

затем

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

работал

4 голосов
/ 29 октября 2014

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

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

3 голосов
/ 11 марта 2015

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

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

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

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

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

3 голосов
/ 18 апреля 2012

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

machine github.com login myusername password mypass

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

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

2 голосов
/ 29 апреля 2013

Я столкнулся с той же проблемой при настройке 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.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...