Як встановити GIT_SSL_NO_VERIFY лише для конкретних репостів?


283

Я маю використовувати сервер git без належних сертифікатів, але цього не хочу робити

env GIT_SSL_NO_VERIFY=true git command

кожен раз, коли я роблю операцію git. Але я також хотів би залишити SSL увімкнено для інших сховищ git. Чи є спосіб зробити це місцевим до єдиного репо?



f15ijp.com/2012/08/… одне з найкращих знайдених рішень
— vikas etagi

Відповіді:


540

Ви можете зробити

git config http.sslVerify false

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


54
git config --global http.sslПідтвердити "false"
— roothahn

24
--Global НЕ слід застосовувати, тому що ОП спеціально просив, щоб він хотів його лише для конкретних репостів.
— Каннан Еканат

9
Примітка. Здається, що --globalваріант потрібний, коли репо НЕ ще перевірено (не вдається встановити параметри для репо, що ще не існує локально). Завжди можна ввімкнути його після.
— Джеймс Вілкінс

2
Я відмовився від редагування, оскільки питання спеціально не вимагав цього плюс, це погана ідея відключити це глобально з міркувань безпеки.
— Етьєнн

2
Я знову відмовився від редагування з тих же причин, що і вище. Це питання стосується конкретного репо. Якщо ви хочете відповісти на всі репости, це має бути окремим питанням.
— Calimo

121

Можна зробити наступним чином

Для єдиного репо

git config http.sslVerify false

Для всіх репо

git config --global http.sslVerify false

7
Це дозволить вимкнути перевірку SSL для всіх сховищ. Первісне питання полягав у тому, щоб зробити його локальним для одного сховища.
— Гвінне Раскінд

4
Чому у світі ти взагалі використовуєш судо? локальному сховищу це не потрібно, і конфігурація користувача знаходиться у $ HOME (що б там не було у вашій системі), тому судо також не потрібно.
— mcepl

@ParthianShot, якщо вони не є користувачем адміністратора, як вони можуть використовувати це за допомогою sudo?
— Thirumalai murugan

1
@Thirumalaimurugan Ви зараз серйозно? sudoслід використовувати лише тоді, коли вам дійсно потрібен root, щоб щось зробити. Як і встановлення нового програмного забезпечення, зміна важливих системних файлів, переформатування накопичувачів, перенастроювання мережі, управління послугами ... У питанні цього хлопця нічого не було, що б означало, що йому потрібно що-небудь робити. Якщо ви адміністратор, вам слід виконувати більшість команд, включаючи ті команди, які змінюють вашу конфігурацію - без судової частини більшості часу.
— Парфянський розстріл

1
@HolaSoyEduFelizNavidad. Коли ОП сказала "для всіх репо", ОП означала "всі репости для цього користувача", а не "всі репости на комп'ютері".
— vy32

98

Як те, що сказав Тірумалай, але всередині клонованого сховища і без нього --global. Тобто,

  1. GIT_SSL_NO_VERIFY=true git clone https://url
  2. cd <directory-of-the-clone>
  3. git config http.sslVerify false

Гарне рішення для випадків, коли тиcould not lock global config file .gitconfig: Permission denied
— антонгородезький

1
Якщо у програмі .gitconfig у дозволі відмовлено, у вашій системі є щось серйозно. Ваш $ HOME повинен бути доступний вам (де саме має бути .gitconfig, чи не так?).
— mcepl

Це насправді не мій сервер. Але дякую все одно. І я видалив шлях із повідомлення про помилку, насправді на цьому сервері git намагається отримати доступ .gitconfig десь у/var/www/...
— antongorodezkiy

Ця відповідь також має чудові пояснення щодо варіантів. stackoverflow.com/a/11622001
— dragon788

2
export GIT_SSL_NO_VERIFY = true
— ETech


10

Якщо ви перебуваєте на машині Windows і інстальовано Git, ви можете спробувати наступні кроки:

  1. Перейдіть у папку установки Git, напр .: C: \ Program Files (x86) \ Git \ тощо
  2. Відредагуйте файл: gitconfig
  3. У розділі [http] додайте рядок: sslVerify = false

    [http]
      sslVerify = false
    

1
це також не відповідає вищезазначеному питанню, де він каже, що не хоче впливати на інші репости.
— bryanmac

і це дуже корисно, коли ви не можете запускати команди git! (я маю sourcetree на віртуальній машині Windows та розміщуючи папку src у шляху UNC, в якому вбудований термінал сорту не може розпізнати!
— danrah

1
THX, це спрацювало, інакше виправлення командного рядка не працювало.
— Nrj

Для користувачів TortoiseGit ви можете відредагувати цей розділ у локальному конфігураційному файлі, виконавши оновлення налаштувань, пов’язане з контекстом та вибравши опцію для редагування лише для локальних
— Стів Таунсенд,

5

Існує простий спосіб налаштування GIT для правильного керування вашим сервером. Просто додайте спеціальний розділ http для свого сервера git та вкажіть, якому сертифікату (закодовано Base64):

~ / .gitconfig

[http "https://repo.your-server.com"]
# windows path use double back slashes
#  sslCaInfo = C:\\Users\\<user>\\repo.your-server.com.cer
# unix path to certificate (Base64 encoded)
sslCaInfo = /home/<user>/repo.your-server.com.cer

Таким чином у вас більше не буде помилок SSL та підтвердити (зазвичай) самопідписаний сертифікат. Це найкращий шлях, оскільки він захищає вас від нападів людини в середині. Якщо ви просто відключите перевірку ssl, ви вразливі до подібних атак.

https://git-scm.com/docs/git-config#git-config-httplturlgt


5

Якщо вам доведеться вимкнути перевірку SSL для одного сервера git, на якому розміщено кілька сховищ, ви можете запустити:

git config --bool --get-urlmatch http.sslverify https://my.bad.server false

(Якщо ви все ще використовуєте git <v1.8.5, запустіть git config --global http.https://my.bad.server.sslVerify false)

Пояснення з документації, де команда знаходиться в кінці, покажіть .gitconfigвміст, який виглядає так:

[http "https://my.bad.server"]
        sslVerify = false

Він ігнорує будь-які перевірки сертифікатів для цього сервера, незалежно від сховища.

У вас також є якесь пояснення в коді


4

Це працює для мене:

git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git

2

Це питання продовжує виникати, і я не знайшов задовільного результату, тому ось що для мене спрацювало (на основі попередньої відповіді https://stackoverflow.com/a/52706362/1806760 , яка не працює):

Мій сервер має https://gitlab.devсертифікат самопідписання.

Спочатку запустіть git config --system --edit(з підвищеного командного рядка, змініть --systemна, --globalякщо ви хочете зробити це лише для вашого користувача), а потім вставіть наступний фрагмент після будь-яких попередніх [http]розділів:

[http "https://gitlab.dev"]
        sslVerify = false

Потім перевірте, чи все ви зробили правильно:

> git config --type=bool --get-urlmatch http.sslVerify https://gitlab.dev
false

1

для Windows, якщо ви хочете глобальну конфігурацію, тоді запустіть

git config --global http.sslVerify false

ОП просила specific reposявно
— малат

0

У Linux, якщо ви викликаєте це всередині папки репозиторію git:

git config http.sslVerify false

це додасть sslVerify = falseу [http]розділі configфайлу в .gitпапці, що також може бути рішенням, якщо ви хочете додати це вручну за допомогою nano .git/config:

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