Як встановити 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.