Как установить GIT_SSL_NO_VERIFY только для определенных репо?


284

Я должен использовать Git-сервер без надлежащих сертификатов, но я не хочу делать

env GIT_SSL_NO_VERIFY=true git command

каждый раз, когда я делаю операцию мерзавца. Но я также хотел бы оставить SSL включенным для других репозиториев git. Есть ли способ сделать это локальным для одного репо?



f15ijp.com/2012/08/… одно из лучших решений, которые я нашел
vikas etagi

Ответы:


542

Ты можешь сделать

git config http.sslVerify "false"

в вашем конкретном репо, чтобы отключить проверку сертификата SSL только для этого репо.


55
git config --global http.sslПроверьте «false»
roothahn

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

9
Примечание. Кажется, эта --globalопция необходима, когда репо еще не оформлено (невозможно установить опции для репо, который еще не существует локально). После этого всегда можно включить его снова.
Джеймс Уилкинс

2
Я откатил редактирование, так как вопрос специально не спрашивал об этом плюс, это плохая идея, чтобы отключить это глобально по соображениям безопасности.
Этьен

2
Я снова откатил редактирование по тем же причинам, что и выше. Этот вопрос о конкретном репо. Если вы хотите получить ответ на все репо, это должен быть отдельный вопрос.
Calimo

122

Вы можете сделать следующим образом

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

git config http.sslVerify false

Для всех репо

git config --global http.sslVerify false

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

4
Почему в мире вы используете sudo вообще? Локальному репозиторию это не нужно, а пользовательская конфигурация находится в $ HOME (что бы это ни было в вашей системе), поэтому ему также не требуется sudo.
mcepl

@ParthianShot, если они не администратор, как они могут использовать это без sudo?
Тирумалай Муруган

1
@Thirumalaimurugan Ты серьезно сейчас? sudoдолжен использоваться только когда вам действительно нужен root, чтобы что-то делать. Как установка нового программного обеспечения, изменение важных системных файлов, переформатирование дисков, перенастройка сети, управление службами ... В вопросе этого парня не было ничего, что указывало бы на то, что ему нужен root, чтобы что-то делать. Если вы являетесь администратором, вы должны выполнять большинство ваших команд, включая те, которые изменяют вашу конфигурацию, большую часть времени без sudo.
Парфянский выстрел

1
@HolaSoyEduFelizNavidad, когда OP сказал «для всех репо», OP означал «все репо для этого пользователя», а не «все репо на компьютере».
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

11

В частности, если вам нужен рекурсивный клон

GIT_SSL_NO_VERIFY=true git clone --recursive https://github.com/xx/xx.git

10

Если вы работаете с Windows и у вас установлен Git, попробуйте выполнить следующие действия:

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

    [http]
      sslVerify = false
    

1
это также не отвечает на вопрос выше, где он говорит, что не хочет влиять на другие репо.
bryanmac

и это действительно полезно, когда вы не можете запускать команды git! (Например, наличие исходного дерева на виртуальной машине Windows и размещение папки src в UNC-пути, по которому встроенный терминал Sorcetree не может распознать!
Данрах

1
спасибо, это работало, как-то исправление командной строки не работало.
Nrj

Для пользователей TortoiseGit вы можете отредактировать этот раздел в локальном конфигурационном файле, выполнив обновление настроек для конкретного контекста и выбрав опцию редактирования только локально
Steve Townsend

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.