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


389

Я застряг за брандмауером, тому доведеться використовувати 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дає мені

* Про підключення () до порту github.com 443 (# 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, я розбився.


Якщо я встановлю http.sslПідтвердити хибність, то з'єднання буде захищеним? і це хороший шлях до використання? Між нами ми використовуємо брандмауер pfsense. зараз файл .gitconfig в профілі користувача порожній.
Nullpointer

Відповіді:


57

Ви можете пропустити повз цю відповідь, якщо ви хочете виправити проблему з сертифікатами. Ця відповідь стосується тунелювання ssh через брандмауер, що є IMHO кращим рішенням для вирішення проблем із брандмауером / проксі.

Існує кращий спосіб, ніж використання доступу до http, і це використовувати службу ssh, яку пропонує github на порту 443 сервера ssh.github.com.

Ми використовуємо інструмент під назвою штопор. Це доступно як для CygWin (через налаштування з домашньої сторінки cygwin), так і для Linux, використовуючи ваш улюблений інструмент упаковки. Для MacOSX він доступний з макпортів і варити принаймні.

Командний рядок такий:

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

Проксіхост і проксипорт - це координати https проксі. Цільовий хост і цільовий порт - це місцезнаходження хоста, до якого потрібно тунель. 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, Macs та 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

Проблема полягає в тому, що у вас не встановлено жодних сертифікатів сертифікаційного органу у вашій системі. І ці серти не можна встановити за допомогою setupexe cygwin.

Оновлення: встановіть пакет пакету Net / ca-сертифікати в cygwin (спасибі dirkjot)

Є два рішення:

  1. Власне встановити кореневі сертифікати. Хлопці Curl дістали для вас сертифікати від Mozilla .

    cacert.pemФайл - це те, що ви шукаєте. Цей файл містить> 250 сертифікатів CA (не знаю, як довірити цій кількості ppl). Вам потрібно завантажити цей файл, розділити його на окремі сертифікати, покласти їх у / 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 має наслідки для безпеки . Це дозволяє атакувати "Людину в середині", коли ви використовуєте Git для передачі даних по мережі. Будьте впевнені, що ви повністю розумієте наслідки для безпеки, перш ніж використовувати це як рішення. Або ще краще, встановіть кореневі сертифікати.

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

git config --global http.sslVerify false

Це дозволить перешкодити CURL підтвердити сертифікацію HTTPS.

Лише для одного сховища:

git config http.sslVerify false

17
Якщо ви не хочете редагувати свої глобальні налаштування (наприклад, всі репости), виключіть --global
Ерін

57
Ви можете, будь ласка, додати примітку про те, наскільки це надзвичайно небезпечно?
Хронічний

26
це жахлива ідея. є причина, що сертифікати повинні бути перевірені. якщо ви не підтвердите сертифікат як довірений, то сертифікат може бути створений ким-небудь, і ви можете бути сприйнятливим до людини в середній атаці.
Марк Кері

24
Не вимикайте перевірку SSL!
Тім

14
Для всіх людей "не робіть цього": впевнений, що це не найбезпечніший підхід взагалі. АЛЕ, набагато кращий варіант, щоб взагалі не було SSL! Оскільки деякі люди працюють лише на своїх приватних простих сервісах git, це добре для них. Впевнений, для будь-якої реальної безпеки це налаштування НЕ GO. Найнебезпечніше - це пересилання простих байтів через мережу.
Петро Стегнар

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 / Administrator. Дякую!
Ерік

1
Ідеально, можна навіть краще. Я замінив свій старий /etc/ssl/certs/ca-certificates.crtна моєму Ubuntu 8.04 LTS цим файлом, і він чарівно спрацював!
Майкл-О

1
@Eric спасибі за згадування 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.sslПідтвердити хибність, то з'єднання буде захищеним? і це хороший шлях до використання? Між ними ми використовуємо брандмауер
pfsense

@Ravi з'єднання технічно спрацює, так, але це однозначно не є гарною ідеєю. Якщо і ваше походження git, і локальна машина є внутрішніми та підконтрольними вашій організації, це може бути прохідним , але, за коментарем користувача456814, відключення перевірки відкриває вас до атак MITM.
Doktor J

40

Дуже просте рішення: замініть https: // на git: //

Використовуйте git: //the.repository замість https: //the.repository і буде працювати.

У мене була проблема в Windows з TortoiseGit і це вирішило її.


Я думаю, це працює, тому що він не перевіряє ssl для git://. Як зазначено у цій відповіді вище , відключення перевірки ssl є ризиком безпеки.
danijar

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

11
@Cupcake git://зовсім НЕ використовувати SSH. Див . Протокол SSH та протокол Git .
nyuszika7h

@ nyuszika7h о, ти маєш рацію. Я постійно git://плутаю з git@github.com:user/project.git, що є синтаксисом SCP-ish .

31

Як найпопулярніша відповідь (Олексій Віщенцев), це:

Проблема полягає в тому, що у вас не встановлено жодних сертифікатів сертифікаційного органу у вашій системі. І ці серти не можна встановити за допомогою setupexe cygwin.

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

Все, що вам потрібно зробити, - це перейти до налаштування cygwin і включити пакет 'ca-сертифікати' (він знаходиться в розділі Net). Це зробило для мене трюк.


1
Помилка cygwin git показує, CAfile: /etc/ssl/ca-bundle.crtтоді як пакет cy-сертифікатів 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 знаходитись у папці біт 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-isissue/


Це чудово працювало для мене; ви, ймовірно, спочатку повинні зробити резервну копію оригіналу, як пропонує ОП. Схоже, що це відбувається, коли Github оновлює їхню програму, якщо ви перебуваєте в системі, яка має старішу.
Еван Донован

На CentOS 5 я виправив його yum update openssl, який також оновлює ca-пакет.
raarts

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

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) Linux Hat Linux. Дякую!
Джош

13

Якщо все, що ви хочете зробити, це просто скористатися клієнтом Cygwin git з github.com, існує набагато простіший спосіб без необхідності перевантажувати, витягувати, конвертувати, розбивати файли cert. Поступайте так (я припускаю, що 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.

Це воно.

Звичайно, це встановлює лише одну ієрархію cert, ту, яку вам потрібно для github. Звичайно, ви можете використовувати цей метод на будь-якому іншому веб-сайті без необхідності встановлення 200 сертів сайтів, яким ви (не обов'язково) довіряєте.


8

Якщо ви перебуваєте на Mac OS X, ви можете встановити пакет ca-cert через 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 repo. Просто виконайте те, що говорить 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....команди. Дякую та сподіваємось, що це допомагає.

ОНОВЛЕННЯ

Схоже, пучок завивки-ca нещодавно був видалений з домашньої кашки . Тут є рекомендація .

Ви хочете перенести деякі файли в:

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


1
Ви також можете спробувати наступне: export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Maverick

Привіт, у мене є аналогічна проблема ( stackoverflow.com/questions/20939105/… ), і ця сама проблема з’являється, коли я намагаюся встановити домашню пиву. Що я можу зробити в цьому випадку? Введення "git config --system http.sslcainfo /usr/local/share/ca-bundle.crt" у моїй консолі повертається "помилка: не вдалося заблокувати файл конфігурації /Applications/Xcode.app/Contents/Developer/usr/etc/ gitconfig: Немає такого файлу чи каталогу ". Дякую за твою допомогу!
Матьє

@Mathieu це досить дивно. Схоже, ваша система вказує на версію git щодо XCode. Яким є результат запуску "that git" з вашого терміналу?
A-Dubb

6

Ви можете спробувати цю команду в Терміналі :

git config --global http.sslПідтвердити хибність


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

Це не спрацювало для мене - я все одно отримую ту саму помилку.
holdenlee

4

на розбери пі я

pi @ raspbmc: ~ $ клоніровать клон http: //github.com/andreafabrizi/Dropbox-Uploader. http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatal: помилка HTTP-запиту

так id a

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


Це питання валідації сертифікатів, а не питання автентифікації - деякі операційні системи (включаючи ту, яку запущено ОП) не мають ЦА, який видає новий сертифікат 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термінал. У моєму випадку (нова малина Пі) місцевий годинник був встановлений на 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 та дотримуйтесь процедур встановлення Процедура встановлення curl

  • Отримайте назад сертифікат органу, який доставляє сертифікат для сервера.

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

  • Налаштуйте git для використання цього файлу сертифікатів, відредагувавши файл .gitconfig та встановивши шлях sslcainfo. sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • На клієнтській машині ви повинні отримати сертифікат і налаштувати файл .gitconfig.

Я сподіваюся, що це допоможе комусь із вас.


1

Я спробував усе, врешті-решт я заглянув у файл хостів і там був випадковий запис для github. Видалення псевдоніма виправило проблему

% systemroot% \ system32 \ драйвери \ тощо \ господарі


1

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



0

Мені були потрібні дві речі:

  1. перейдіть до налаштування cygwin і включіть пакет " ca-сертифікати " (він знаходиться в мережі) (як зазначено в іншому місці).

  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 ...


-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.