Github: помилка клонування мого приватного сховища


155

Я намагаюся клонувати мій проект GitHub за допомогою https-URL, але він не вдається з помилкою:

$ git clone https://foo@github.com/foo/foo-private.git
Cloning into foo-private...
Password:
error: error setting certificate verify locations:
  CAfile: /bin/curl-ca-bundle.crt
  CApath: none
 while accessing https://foo@github.com/foo/foo-private.git/info/refs

fatal: HTTP request failed

Що я роблю неправильно?

Відповіді:


289

Я бачив це в Windows, з msysgit 1.7.2.3. Ви повинні виправити шлях до bin / curl-ca-bundle.crt . Мені довелося вказати абсолютний шлях, використовуючи зворотні риски:

git config --system http.sslcainfo "C: \ Program Files (x86) \ git \ bin \ curl-ca-bundle.crt"

або - не дуже рекомендується - ви можете повністю вимкнути перевірки SSL, виконавши:

git config --система http.sslverify false

В обох випадках це призведе до зміни файлу [git-install-dir] / etc / gitconfig, який також можна редагувати безпосередньо.

(Оригінальні рішення знайдено на веб- сайті http://github.com/blog/642-smart-http-support )


1
У моєму випадку мені потрібно було використовувати роздільник каталогів для Windows, я маю на увазі, що я повинен використовувати "\" (windows) замість "/" (unix) для розділення каталогів на шляху.
Віктор

Оскільки оригінальне написання публікації нижче працює для мене. Спробуйте це на загальнодоступному сховищі: $ git clone github.com/schacon/grack.git Для приватних репост або для доступу до вашого сховища ви можете клонувати так: $ git clone username@github.com/username/project.git Дякую :)
J4cK

13
Для майбутніх посилань шлях, здається, змінив для мене "C: \ Program Files (x86) \ Git \ mingw32 \ ssl \ certs \ ca-bundle.crt"
Бен,

3
Шлях на моїй 64-бітної машині - "C: \ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt"
Kamaraju Kusumanchi

3
На моїй 64-бітній машині, яка git config --global http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"працювала, не можу сказати, чому глобальна, а система не вийшла.
семако

76

Я вирішив проблему встановлення Git з: https://git-for-windows.github.io/ Знайдіть шлях до файлу cert:

D: \ Файли програм \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt

Налаштуйте шлях Git:

git config --system http.sslcainfo "D: \ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt"

Спробуйте ще раз


13
Я отримав error: could not lock config file C:\Program Files\Git\mingw64/etc/gitconfig: Permission denied. Побіг "C:\Program Files\Git\git-bash.exe"як адміністратор і спробував ще раз, і це спрацювало. Дякую!
AXO

Краще пояснення
Касім Рангвала

2
Щойно я встановив Git для Windows 2.13.2 і зіткнувся з цією проблемою, намагаючись просунутися до пульта. Я виявив, що файл cert був у подібному місці:C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt
Simon Tewsi

1
це працювало для мене, я встановив лише Git, використовуючи посилання u shared, і це вирішило це для мене, спасибі
Сонячний Окоро Ава

Я встановив GIT у вказаному каталозі під час встановлення, отже, мені довелося вказати правильний шлях MINGW64 відповідно до цієї установки
gargkshitiz

21

Якщо ви використовуєте MSYS2 ...

Просто встановіть пакети сертифікатів за допомогою таких команд:

32 біта

pacman -S mingw-w64-i686-ca-certificates ca-certificates

64 біт

pacman -S mingw-w64-x86_64-ca-certificates ca-certificates

1
Плюс один. Дякую. Не пам’ятайте, чи потрібно це робити 32-бітний msys2, але обставини можуть відрізнятися.
bvj

1
Дякую, я підтверджую, що це потрібно зробити за допомогою msys2 64 біт :-D
FabienRohrer

1
Може статися, що файл /usr/ssl/certs/ca-bundle.crt порожній, просто знову встановіть ca-сертифікати
Daniel YC Lin

Не для Windows: $ pacman -S mingw-w64-x86_64-ca-сертифікати ca-сертифікати bash: pacman: команда не знайдена
belgoros

@Javix Ось чому написано "Якщо ви використовуєте MSYS2". Команда pacman за замовчуванням недоступна у Windows, але вона доступна, якщо у вас встановлено MSYS2.
CoolOppo

12

Якщо ви використовували Cygwin, ви можете встановити пакет ca-сертифікатів за допомогою apt-cyg :

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /usr/local/bin
apt-cyg install ca-certificates

Як встановити пакет cygwin з командного рядка?


1
Блін. Я так довго шукав. Це працювало також на mac. Дякую, що поділились.
Флоу

1
На Cygwin це працювало на менеgit config --system http.sslcainfo /usr/ssl/certs/ca-bundle.crt
ATorras

9
git config --global http.sslverify "false" 

Вирішить проблему. Після цього з'являється спливаюче вікно для введення вашого імені користувача та пароля


5
Ви можете згадати про наслідки безпеки. Це здається жахливою ідеєю, особливо в усьому світі.
C. Helling

Працював над HPC для мене
mmann1123

6

ВИРІШЕНО: Я отримав цю помилку, коли встановив оновлення інсталятора Git Windows. Сталося те, що я не встановив його з правами адміністратора, тому Git був встановлений у "C: \ Users \ my_name \ AppData \ Local \ Programs" замість "C: \ program Files". перевстановлення Git як адміністратора дозволило помістити його в файли C: \ program Файли і все пішло нормально!


Для чого варто, видалення та перевстановлення GitHub Desktop вирішило це і для мене, незважаючи на те, що він все ще використовує папку AppData.
Бен Коллер

5

Це працювало для мене (я використовую Linux Manjaro). Запускаю cmd для перегляду сертифікатів ca:

$ curl-config --ca
**/etc/ssl/certs/ca-certificates.crt**

Але насправді я знайшов сертифікати на шляху:

**/etc/ca-certificates/extracted/ca-bundle.trust.crt**

Потім додайте конфігурацію в ~ / .gitconfig (якщо її немає, створіть її):

**vim ~/.gitconfig**
[http]
    sslVerify = true
    sslCAinfo = /etc/ca-certificates/extracted/ca-bundle.trust.crt

[user]
    email = <email of github account>
    name = <username of github account>

Це працює!

.rbenv]$ git pull

remote: Counting objects: 70, done.
remote: Compressing objects: 100% (47/47), done.
remote: Total 70 (delta 39), reused 12 (delta 12), pack-reused 6
Unpacking objects: 100% (70/70), done.
From https://github.com/sstephenson/rbenv
   c43928a..efb187f  master     -> origin/master
 + 37ec781...7e57b52 user-gems  -> origin/user-gems  (forced update)
Updating c43928a..efb187f
Fast-forward
 libexec/rbenv-init         |  4 ++--
 libexec/rbenv-version-file |  1 +
 test/init.bats             |  2 +-
 test/test_helper.bash      | 25 +++++++++++++++----------
 4 files changed, 19 insertions(+), 13 deletions(-)

1
Працював для мене на archlinux!
lucasem

4

git config --system http.sslcainfo /bin/curl-ca-bundle.crt

Це працює. Не потрібно давати повний шлях.


3

Я зіткнувся з цим під час тяги. Для мого редагували глобальний файл git config, який вирішив проблему.

Перейдіть у свою домашню папку та відкрийте файл .gitconfig. Зазвичай C: \ Users \ .gitconfig

Якщо файлу немає, створіть його

[http]
sslcainfo = E: \ systools \ git-1.8.5.2 \ bin \ curl-ca-bundle.crt

Там ви повинні вказати свій власний шлях установки git. Тут я використовував портативну версію git.

Тоді git clone / pull це буде працювати.


1
Вам потрібно скористатися подвійними E:\\systools...
знаками

АЛЕ, не забудьте НЕ загорнути шлях в лапки. супер-інтуїтивно зрозумілий. "C:\\folder\\file"погано, C:\\folder\\fileдобре. Я хочу свою годину назад.
increddibelly

2

Якщо ви використовуєте командну оболонку Git, яка встановлюється за допомогою програми GitHub для Windows, то ця та інші інші проблеми можуть з’явитися після оновлення. Просто запустіть програму Windows Gub Hub і знову її вимкніть. Потім оболонка знову запрацює. Проблема полягає в тому, що оновлення не завершується до запуску програми Windows. Просто використання оболонки на ньому не призводить до завершення оновлення.


2

Я бачив це на своєму Github для Windows.

Я рекомендую видалити Github для Windows та встановити його знову.

До цього я спробував декілька способів, не маючи успіху, але це рішення спрацювало на мене!


1

У Windows з використанням msysgit у мене виникла помилка, і причиною стали мої доповнення до наших корпоративних проксі-сертифікатів.

Якщо ви редагуєте curl-ca-bundle.crt, ви повинні бути впевнені у своїх лінійках. У разі розширення curl-ca, ви повинні використовувати лінійки Linux-Style.

> git ls-remote --tags --heads https://github.com/oblador/angular-scroll.git
fatal: unable to access 'https://github.com/oblador/angular-scroll.git/': error setting certificate verify locations:
  CAfile: C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt
  CApath: none

Ви можете використовувати блокнот ++ для конвертації ліній в Linux (linefeed).


1

З іншого боку, ця проблема може статися в Windows, якщо користувач, який намагається використовувати git, відрізняється від користувача, який його встановив. Помилка може вказувати на те, що git не може отримати доступ до файлів сертифікатів. Встановлення git як адміністратора та використання відповіді @ rogertoday вирішило мою проблему.


1

Я знайшов хороше рішення для додавання / оновлення сертифікатів CA на RHEL / CentOS 6, що є першопричиною, про яку повідомлялося.

Оскільки вони стали застарілими дистрибутивами, органи керування в цій системі не оновлювались до виконання команди sudo yum update.

Проблему не усвідомили, доки в режимі GIT_CURL_VERBOSE не з’явилася проблема шляху шляху.


0

В Linux у мене виникла ця помилка та виправлено її запуском sudo update-ca-certificates.


Ви повинні пояснити, що робить ця команда і чому це допомагає. Опублікування необроблених команд без пояснень не є хорошою ідеєю, особливо якщо вам потрібен кореневий доступ.
Арахіс

0

Для мене те, що вирішило проблему, було те, що на вікні Windows 10 я спробував видалити git та перевстановити, використовуючи Windows Cmd за замовчуванням, а не Git Bash

Відкрийте CMD і запустіть наступне

//Once installed try to resintall the bin folder 
git config --system http.sslcainfo \bin/curl-ca-bundle.crt

//disable ssl verification
git config --global http.sslverify "false"

//Then try to clone repo again
git clone git@github.com:account/someproject.git

0

Якщо хтось інший стикається з цією проблемою в Git для Windows і не має curl-ca-bundle.crtмісця у вашій системі навіть після перевстановлення, це наступний процес:

  1. Завантажте останню версію curl тут: дзеркало для завантаження curl
  2. Витягнути і перейти до curl-**.**.*/libкомандного рядка
  3. Біжи ./mk-ca-bundle.prl
  4. Скопіюйте ca-bundle.crtу свій git шлях та оновіть конфігурацію, як зазначено в інших відповідях

Викрикуйте цю суть, щоб допомогти мені виконати встановлення.


0

Я вирішив цю проблему на Windows Server 2016, перевстановивши її та вибравши "рідну бібліотеку захищених каналів Windows" на кроці встановлення "Вибір транспортного резервного пакета HTTPS".



0

У моєму випадку win10 У мене є дві версії про.gitconfig

  • перший в C:\Program Files\Git\etc
  • другий - в C:\Users\<user>

Команда

git config --system http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"

дійсно вносить зміни C:\Program Files\Git\etc, але git якось використовує config уC:\Users\<user>

Тож за допомогою блокнота я змінив другий .gitconfigі git нарешті прийняв правильну конфігурацію і почав працювати.


-1

Мені вдалося вирішити це питання за допомогою наступної команди.

git config --система http.sslverify false


Ця відповідь була б кращою, якби вона обговорювала наслідки безпеки цього параметра та передбачала й інші шляхи вирішення проблеми. Хоча нинішня прийнята відповідь робить це і багато іншого ...
чорт

-1

Я отримав цю помилку після переміщення git через жорсткі диски. Видалення та перевстановлення нового місця виправлено


-1

У git для Windows ви також можете перевстановити та вибрати метод перевірки нативного сертифіката Windows (за замовчуванням OpenSSL). Це дозволить пропустити перевірку OpenSSL і замість цього використовувати рідну Windows, яка не потребує підтримки окремого інструменту (OpenSSL) та сертифікатів.

Для мене прекрасно працювали :)


-2

Наступна команда

git clone git://github.com/username/projectname.git

працював на мої потреби, але я вважаю, що ви хочете більше, ніж доступ лише для читання, правда?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.