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