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

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

Я попытался настроить пульт на https://[email protected]/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 дает мне

* О подключении() к порту github.com 443 (# 0)
* Попытка 207.97.227.239... * успешно установить места проверки сертификатов:
* CAfile: none
  CApath:/usr/ssl/certs
* Проблема с сертификатом SSL, убедитесь, что сертификат CA в порядке. Детали:
Ошибка: 14090086: Подпрограммы SSL: SSL3_GET_SERVER_CERTIFICATE: проверка сертификата не удалась
* Истечение срока действия * Закрытие соединения # 0
* О подключении() к порту github.com 443 (# 0)
* Попытка 207.97.227.239... * успешно установить места проверки сертификатов:
* CAfile: none
  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, я обмануто.

Ответы

Ответ 1

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

[email protected]:~$ 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.
[email protected]:~$

(Примечание: если вы никогда ранее не входили в 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.

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

Ответ 2

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

Обновление: установите пакет 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...
    

Ответ 3

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

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

git config --global http.sslVerify false

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

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

git config http.sslVerify false

Ответ 4

Я хотел 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 здесь нет расширения пути, поэтому вы не можете использовать ~ без уродливого kludge. Кроме того, вы можете пропустить файл конфигурации и установить путь через переменную среды GIT_SSL_CAINFO.

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

Ответ 5

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

export GIT_SSL_NO_VERIFY=true

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

Ответ 6

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

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

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

Ответ 7

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

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

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

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

Ответ 9

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

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

Ответ 10

Клонировать окна при настройке SSL проверить на false:

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

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

Ответ 11

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

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

Что это.

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

Ответ 12

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

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

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

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.

UPDATE:

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

UPDATE

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

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

UPDATE

Похоже, curl-ca-bundle был недавно удалено из homebrew. Ниже приведена рекомендация .

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

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

Ответ 13

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

Ответ 14

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

Вы можете проверить, что все работает с помощью openssl в командной строке:

openssl s_client -connect github.com:443

Ответ 15

на rasbery pi я было

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

поэтому id a

sudo apt-get install ca-certificates

затем

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

работал

Ответ 16

Если вы использовали debian-based ОС, вы можете просто запустить

apt-get install ca-certificates

Ответ 17

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

machine github.com login myusername password mypass

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

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

Ответ 18

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

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

Хорошая вещь об этом решении заключается в том, что он вступает в силу только в текущем окне cmd.

Ответ 19

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

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

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

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1

Ответ 20

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

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

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

  • Вернуть сертификат органа, предоставляющего сертификат для сервера.

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

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

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

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

Ответ 21

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

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

Ответ 22

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

Ответ 24

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

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

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

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

    (опция Verbose не требуется)

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

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

    git...

Ответ 25

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

Ответ 26

Я знаю, что это немного мертвая лошадь, но это то, что я должен был сделать как пользователь linux на новой минимальной установке сервера openSUSE 12.3:

zypper in ca-certificates ca-certificates-cacert ca-certificates-mozilla

После этого я был в бизнесе.

Ответ 27

SSL-сертификаты защищают всю конфиденциальную и конфиденциальную передачу данных через веб-сайты и онлайн-системы. Сертификаты SSL завоевывают доверие конечных клиентов и увеличивают продажи за счет увеличения конверсии. Сертификаты помогают получить более высокие позиции в рейтинге, поскольку Google добавил SSL-сертификаты в свой алгоритм. GoGetSSL предоставляет все возможные SSL-сертификаты, доступные на рынке, начиная с проверки домена и заканчивая сертификатами расширенной проверки. Мы используем SSL-сертификаты. Ключевым словом для продвижения нашего сайта является страница служб безопасности сетевого брандмауэра, которая отображается на первой странице поисковой системы Google.

Ответ 28

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

Ответ 29

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

ssh -T [email protected]

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

[email protected]:MyGithubUsername/MyRepoName.git

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

Ответ 30

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

  • Открыть доступ к брелокам
  • поиск Сертификаты для "DigiCert"
  • Меню "Просмотр" > "Показать истекшие сертификаты"

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

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