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)
Есть два решения:
-
Собственно установите корневые сертификаты. Керл, ребята, извлекли для вас сертификаты от 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
.
-
Игнорировать проверку сертификата 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 (он находится в сети). Это помогло мне.
Ответ 8
Я знаю исходные вопросники 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/
Ответ 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-сертификата и использовал простой пароль для имени пользователя, как показано ниже
Ответ 23
Мне нужны сертификаты только для Cygwin и git, поэтому я сделал то, что отправил @esquifit. Однако мне пришлось вручную выполнить шаг 5, c_rehash не был доступен в моей системе. Я следил за этим руководством: вместо этого устанавливать сертификаты CA в среду OpenSSL.
Ответ 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 года (несколько дней назад). Удаление устаревшего сертификата разрешило проблему для меня.
Надеюсь, что это поможет.