Как я могу заставить git принимать самоподписанный сертификат?

Можно ли с помощью Git указать, чтобы он принимал самоподписанный сертификат?

Я использую https-сервер для размещения сервера git, но пока сертификат самоподписан.

Когда я впервые пытаюсь создать там репо:

git push origin master -f

Я получаю сообщение об ошибке:

error: Cannot access URL     
https://the server/git.aspx/PocketReferences/, return code 22

fatal: git-http-push failed

person Ian Vink    schedule 23.07.2012    source источник
comment
Как узнать, что проблема в сертификате?   -  person Amber    schedule 24.07.2012
comment
Вместо этого с ПК инструмент Git другого пользователя позволяет им игнорировать сертификат, и он работает. С Mac я не могу понять, как игнорировать.   -  person Ian Vink    schedule 24.07.2012
comment
Ошибка, которую я получил, с git 2.1.1: фатальный: невозможно получить доступ 'https: //.../project.git/': проблема с сертификатом SSL: самоподписанный сертификат в цепочке сертификатов   -  person Stan Kurdziel    schedule 26.11.2014
comment
в OSX / macintosh кажется, что git не будет использовать параметр sslcainfo. если вы можете успешно использовать curl --cacert для получения пути к репо, но git не работает, вам следует добавить сертификат в загадочную программу OSX Keychain. подробнее здесь суперпользователю. ru / questions / 605900 /   -  person amwinter    schedule 21.10.2015
comment
Я считаю этот документ полезным gist.github.com/evantoli/f8c23a37eb3558ab8765   -  person Mofaggol Hoshen    schedule 20.03.2020
comment
f15ijp.com/2012/08/ одно из лучших решений, которые я нашел   -  person vikas etagi    schedule 22.03.2020
comment
Альтернативное решение - использовать протокол git (через ssh) вместо https.   -  person Nathan Long    schedule 06.10.2020


Ответы (17)


Чтобы навсегда принять конкретный сертификат

Попробуйте http.sslCAPath или http.sslCAInfo. Ответ Адама Спирса дает несколько отличных примеров. Это наиболее безопасное решение вопроса.

Чтобы отключить проверку TLS / SSL для одной команды git

попробуйте передать -c в git с соответствующей переменной конфигурации или используйте ответ Flow:

git -c http.sslVerify=false clone https://example.com/path/to/git

Чтобы отключить проверку SSL для определенного репозитория

Если репозиторий полностью находится под вашим контролем, вы можете попробовать:

git config --global http.sslVerify false

В git есть довольно много параметров конфигурации SSL. На странице руководства git config:

http.sslVerify
    Whether to verify the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_NO_VERIFY environment variable.

http.sslCAInfo
    File containing the certificates to verify the peer with when fetching or pushing
    over HTTPS. Can be overridden by the GIT_SSL_CAINFO environment variable.

http.sslCAPath
    Path containing files with the CA certificates to verify the peer with when
    fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CAPATH environment variable.

Еще несколько полезных параметров конфигурации SSL:

http.sslCert
    File containing the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CERT environment variable.

http.sslKey
    File containing the SSL private key when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_KEY environment variable.

http.sslCertPasswordProtected
    Enable git's password prompt for the SSL certificate. Otherwise OpenSSL will
    prompt the user, possibly many times, if the certificate or private key is encrypted.
    Can be overridden by the GIT_SSL_CERT_PASSWORD_PROTECTED environment variable.
person Christopher    schedule 23.07.2012
comment
'git config --global http.sslVerify false' помогло. Спасибо! - person Chris Story; 05.05.2015
comment
Вы не должны глобально отключать проверку сертификата TLS (/ SSL). - person Flow; 13.08.2015
comment
@Flow - полностью согласен. Я отредактировал этот (теперь довольно старый) ответ, чтобы он был более полемичным по поводу отключения проверки сертификата TLS / SSL. - person Christopher; 17.08.2015
comment
для меня это git -c http.sslVerify=false clone https://domain.com/path/to/git решило мою проблему, спасибо ... - person Fernando Gomes; 10.02.2016
comment
Мне очень нравится одноразовый синтаксис для клонирования проекта, который устанавливает сертификаты организации для всех будущих запросов. - person StockB; 03.05.2017
comment
@Flow Если мы находимся в рабочей среде, где нашим работодателем является MITM, какая альтернатива глобальному отключению TLS? / SSL? - person Stevoisiak; 27.09.2017
comment
Обычно закрепление сертификата, возможно, в сочетании с доверием при первом использовании (TOFU), является последней линией защиты, которая должна работать в большинстве случаев. - person Flow; 27.09.2017
comment
Я пробовал: git -c http.sslVerify = false pull и git config --global http.sslVerify false с последующим git pull, но оба они дали мне: fatal: невозможно получить доступ 'github.com/ndattani/AI_ENERGIES.git ': ошибка подключения SSL - person user1271772; 21.03.2018
comment
@StevenVascellaro проверьте ответ AperioOculus ниже. Я нахожусь в корпоративной среде, и шаг за шагом его ответ у меня сработал. stackoverflow.com/a/49515609/1047907 - person fujiiface; 02.05.2018
comment
Потрясающе! это работает как шарм git config http.sslVerify false слишком много сертификатов ssl для установки в противном случае :) спасибо - person Athar; 18.05.2018
comment
@Flow Поскольку мы здесь педантичны - никогда не делайте абсолютных заявлений. Контекст - король. Ни одно из утверждений не остается верным при изменении контекста. - person FeignMan; 23.08.2018
comment
Да нет. Вы всегда можете закрепить сертификат вместо того, чтобы полностью отключить проверку. - person Flow; 23.08.2018
comment
Как заметил Стивен Васкелларо: если единственный выход из сети компании - это прокси компании, то сертификаты, с которыми нужно иметь дело, - это сертификаты компании, а для защиты от MITM есть этот прокси, о котором нужно заботиться. Так что в этом случае git config --global http.sslVerify false не является проблемой безопасности. - person TNT; 25.09.2018
comment
Кстати, раньше я использовал решение git config --global http.sslCAInfo /path/to/my-cert. Позже я обнаружил, что это приведет к ошибке, связанной с невозможностью получить сертификат местного эмитента, когда git клонирует другой репозиторий git в github.com в Windows 10 (git версии 2.16.2.windows.1, Git Extensions 2.50.02). Таким образом, я советую ограничить хост http.sslCAInfo в этом ответе в другом потоке: stackoverflow.com/a/47196562/1323552 (т.е. git config --global http.https://your.host/.sslCAInfo /path/to/your-cert) - person Johnny Wong; 18.02.2019

Вы можете установить GIT_SSL_NO_VERIFY на true:

GIT_SSL_NO_VERIFY=true git clone https://example.com/path/to/git

или, в качестве альтернативы, настройте Git, чтобы не проверять соединение в командной строке:

git -c http.sslVerify=false clone https://example.com/path/to/git

Обратите внимание: если вы не проверяете сертификаты SSL / TLS, то вы уязвимы для атак MitM.

person Flow    schedule 14.10.2013
comment
Вы также можете использовать флаг -c на git, чтобы изменить значение конфигурации для одной команды. Однако я думаю, что этот синтаксис чище. - person Christopher; 09.01.2014
comment
Ах, я не знал о -c в git. Я действительно считаю, что это более чистое решение, а не загрязнение окружающей среды. :) - person Flow; 09.01.2014
comment
@SkylarSaveland Обратите внимание, что git -c http.sslVerify=false <gitSubCommand> также может работать через посредников. - person Flow; 18.02.2015
comment
это: git config http.sslVerify false, работай со мной .. спасибо - person Fernando Gomes; 11.02.2016
comment
Следует отметить, что это решение открывает возможности для атак типа «человек посередине». - person omikron; 08.03.2016
comment
Ответ описывает только наименее безопасный вариант. - person cp.engr; 01.02.2017

Я не большой поклонник [EDIT: исходные версии] существующих ответов, потому что отключение проверок безопасности должно быть крайней мерой, а не первым предложенным решением. Даже если вы не можете доверять самозаверяющим сертификатам при первом получении без дополнительных методов проверки, использование сертификата для последующих git операций, по крайней мере, значительно усложняет жизнь атакам, которые происходят только после загрузки сертификат. Другими словами, если сертификат, который вы скачали, является подлинным, с этого момента все в порядке. Напротив, если вы просто отключите проверку, вы будете широко открыты для любого вида атак «злоумышленник посередине» в любой момент.

В качестве конкретного примера: знаменитый репозиторий repo.or.cz предоставляет самозаверяющий сертификат. Я могу скачать этот файл, поместить его где-нибудь, например, /etc/ssl/certs, а затем сделать:

# Initial clone
GIT_SSL_CAINFO=/etc/ssl/certs/rorcz_root_cert.pem \
    git clone https://repo.or.cz/org-mode.git

# Ensure all future interactions with origin remote also work
cd org-mode
git config http.sslCAInfo /etc/ssl/certs/rorcz_root_cert.pem

Обратите внимание, что использование здесь local git config (т.е. без --global) означает, что этому самозаверяющему сертификату доверяют только для этого конкретного репозитория, что приятно. Это также лучше, чем использование GIT_SSL_CAPATH, поскольку исключает риск git выполнения проверки через другой центр сертификации, который потенциально может быть скомпрометирован.

person Adam Spiers    schedule 06.11.2014
comment
По совпадению, http.sslCAPath использует логику libcurl ssl_capath. Я думаю, что вы действительно можете хранить любое количество сертификатов в каталоге /etc/ssl/certs/, и он эффективно отсортирует все, что вам нужно. Я не тестировал это, заметьте, но это может позволить вам использовать --global с целой кучей сертификатов. Однако стоит проверить. - person Christopher; 16.12.2014
comment
Учитывая риски полного отключения проверки SSL и тот факт, что вопрос заключался в том, как я могу заставить git принимать самоподписанный сертификат?, Это должен быть принятый ответ. - person PLNech; 14.06.2015
comment
В идеальном мире было бы что-то вроде git config http.validCertFingerprint <base64-encoded-hash-of-certifcate> - person Flow; 13.08.2015
comment
@AdamSpiers: Итак, repo.or.cz предоставляет самозаверяющий сертификат, но делает ли GitHub? - person Al Lelopath; 28.08.2015
comment
Сертификат @AlLelopath GitHub подписан DigiCert. Почему вы спрашиваете? - person Adam Spiers; 28.08.2015
comment
Я пытаюсь клонировать с GitHub (и получаю «ошибку самоподписанного сертификата»). Получу ли я сертификат Digicert? Есть ли цена? - person Al Lelopath; 28.08.2015
comment
@AlLelopath Это совершенно странно. Укажите точную git clone команду, которую вы использовали. - person Adam Spiers; 29.08.2015
comment
Я разместил отдельные вопросы: stackoverflow.com/questions/32276466/ - person Al Lelopath; 31.08.2015
comment
Единственный ответ в Интернете, который действительно работает для моего сценария. Это частная библиотека Composer VCS, размещенная на собственном хостинге Gitlab через SSL, что мне нужно в проекте с версией git. - person Dejv; 08.04.2016
comment
Нужно ли снова клонировать код. У меня был клонированный код с помощью ssh, и после этого запустите GIT_SSL_CAINFO = / etc / ssl / certs / xyz.cer и git config http.sslCAInfo /etc/ssl/certs/xyz.cer, но он все еще дает мне ошибку настройки сертификата проверки местоположения: CAfile: /etc/ssl/certs/xyz.cer CApath: нет - person Manish; 04.04.2018
comment
Отличный вариант использования для установки сначала переменной среды, а затем изменения конфигурации на основе проекта. Столкнулся с аналогичной проблемой при настройке сервера Git. Я пытался передать закрытый ключ клону git. Сначала установка переменной среды, а затем установка core.sshCommand решила проблему для меня. - person BcK; 08.04.2019
comment
Из свежего клона; это можно сделать в одной строке: git clone --config http.sslCAInfo=<path_to_cert> https://repo.or.cz/org-mode.git (после этого не нужно вызывать команду git config). - person Aaron; 13.05.2020
comment
как мне получить путь к сертификату в окнах? - person Fakhar Ahmad Rasul; 18.05.2021

Конфигурация самозаверяющего сертификата Git

tl;dr

НИКОГДА не отключайте все проверки SSL!

Это создает плохую культуру безопасности. Не будь таким человеком.

Ключи конфигурации, которые вам нужны:

  • http.sslverify - всегда верно. См. Примечание выше.

Они предназначены для настройки сертификатов хоста, которым вы доверяете.

Они предназначены для настройки ВАШЕГО сертификата для ответа на запросы SSL.

Выборочно примените указанные выше настройки к определенным хостам.

Глобальный .gitconfig для самозаверяющих центров сертификации

Ради меня и моих коллег вот как нам удалось заставить работать самозаверяющие сертификаты, не отключая sslVerify. Измените свой .gitconfig, используя git config --global -e, добавьте следующее:

# Specify the scheme and host as a 'context' that only these settings apply
# Must use Git v1.8.5+ for these contexts to work
[credential "https://your.domain.com"]
  username = user.name

  # Uncomment the credential helper that applies to your platform
  # Windows
  # helper = manager

  # OSX
  # helper = osxkeychain

  # Linux (in-memory credential helper)
  # helper = cache

  # Linux (permanent storage credential helper)
  # https://askubuntu.com/a/776335/491772

# Specify the scheme and host as a 'context' that only these settings apply 
# Must use Git v1.8.5+ for these contexts to work
[http "https://your.domain.com"]
  ##################################
  # Self Signed Server Certificate #
  ##################################

  # MUST be PEM format
  # Some situations require both the CAPath AND CAInfo 
  sslCAInfo = /path/to/selfCA/self-signed-certificate.crt
  sslCAPath = /path/to/selfCA/
  sslVerify = true

  ###########################################
  # Private Key and Certificate information #
  ###########################################

  # Must be PEM format and include BEGIN CERTIFICATE / END CERTIFICATE, 
  # not just the BEGIN PRIVATE KEY / END PRIVATE KEY for Git to recognise it.
  sslCert = /path/to/privatekey/myprivatecert.pem

  # Even if your PEM file is password protected, set this to false.
  # Setting this to true always asks for a password even if you don't have one.
  # When you do have a password, even with this set to false it will prompt anyhow. 
  sslCertPasswordProtected = 0

Использованная литература:

Укажите конфигурацию при git clone-ing

Если вам нужно применить его для каждого репо, документация говорит вам просто запустить git config --local в вашем каталоге репо. Что ж, это бесполезно, если вы еще не клонировали репо локально, не так ли?

Вы можете выполнить global -> local hokey-pokey, установив глобальную конфигурацию, как указано выше, а затем скопировать эти настройки в конфигурацию локального репо после ее клонирования ...

ИЛИ вы можете указать команды конфигурации в git clone которые применяются к целевому репо после его клонирования.

# Declare variables to make clone command less verbose     
OUR_CA_PATH=/path/to/selfCA/
OUR_CA_FILE=$OUR_CA_PATH/self-signed-certificate.crt
MY_PEM_FILE=/path/to/privatekey/myprivatecert.pem
SELF_SIGN_CONFIG="-c http.sslCAPath=$OUR_CA_PATH -c http.sslCAInfo=$OUR_CA_FILE -c http.sslVerify=1 -c http.sslCert=$MY_PEM_FILE -c http.sslCertPasswordProtected=0"

# With this environment variable defined it makes subsequent clones easier if you need to pull down multiple repos.
git clone $SELF_SIGN_CONFIG https://mygit.server.com/projects/myproject.git myproject/

Один лайнер

EDIT: см. VonC answer, который указывает на предостережение об абсолютных и относительных путях для конкретных версий git от 2.14.x / 2.15 до этого одного лайнера

git clone -c http.sslCAPath="/path/to/selfCA" -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" -c http.sslVerify=1 -c http.sslCert="/path/to/privatekey/myprivatecert.pem" -c http.sslCertPasswordProtected=0 https://mygit.server.com/projects/myproject.git myproject/

CentOS unable to load client key

Если вы пытаетесь это сделать в CentOS, и ваш .pem файл дает вам

unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"

Тогда вам понадобится этот ответ StackOverflow о том, как curl использует NSS вместо Open SSL.

И вам захочется перестроить curl из исходного кода:

git clone http://github.com/curl/curl.git curl/
cd curl/
# Need these for ./buildconf
yum install autoconf automake libtool m4 nroff perl -y
#Need these for ./configure
yum install openssl-devel openldap-devel libssh2-devel -y

./buildconf
su # Switch to super user to install into /usr/bin/curl
./configure --with-openssl --with-ldap --with-libssh2 --prefix=/usr/
make
make install

перезагрузите компьютер, поскольку libcurl все еще находится в памяти как общая библиотека

Python, pip и conda

По теме: Как добавить настраиваемый корневой сертификат CA в хранилище CA, используемое pip в Windows?

person Josh Peak    schedule 21.12.2016
comment
Я должен был убедиться, что самозаверяющий сертификат сервера был в формате PEM, прежде чем Git его примет. Кроме того, некоторые из приведенных выше ответов указывают на то, что нужно только указать путь к папке сертификата, используя http.sslCAPath. В моем случае мне пришлось использовать http.sslCAInfo, чтобы указать конкретный файл. Это позволило Git подключиться к нашему частному GitHub без отключения проверки SSL. - person Zarepheth; 16.01.2017
comment
@Zarepheth Спасибо за эту информацию. Я столкнулся с той же проблемой, требующей как CAPath, так и CAInfo. Поскольку наш сертификат CA был в формате PEM, я упустил из виду его документирование. Я обновил ответ этими дополнениями. Рад, что вам удалось безопасно подключиться. - person Josh Peak; 17.01.2017
comment
Это, вероятно, лучший ответ на долгосрочное исправление, если вы вынуждены использовать HTTPS для клонирования и не можете просто использовать SSH для обхода беспорядка с сертификатами. - person dragon788; 10.07.2017
comment
Я собирался добавить этот ответ! Рад, что кто-то уже это обнаружил. - person Franklin Yu; 25.10.2018

Этот ответ взят из эта статья написана Майклом Кауфманом.

Используйте Git для Windows с корпоративным SSL-сертификатом

Проблема:

Если у вас есть корпоративный SSL-сертификат и вы хотите клонировать репо с консоли или VSCode, вы получите следующую ошибку:

фатальный: невозможно получить доступ к 'https://myserver/tfs/DefaultCollection/_git/Proj/ ': проблема с сертификатом SSL: невозможно получить сертификат местного эмитента

Решение:

  1. Экспортируйте корневой самоподписанный сертификат в файл. Вы можете сделать это в своем браузере.

  2. Найдите файл «ca-bundle.crt» в папке git (текущая версия C: \ Program Files \ Git \ usr \ ssl \ certs, но в прошлом она была изменена). Скопируйте файл в свой профиль пользователя. Откройте его с помощью текстового редактора, такого как VSCode, и добавьте содержимое экспортированного сертификата в конец файла.

Теперь нам нужно настроить git для использования нового файла:

git config --global http.sslCAInfo C:/Users/<yourname>/ca-bundle.crt

Это добавит следующую запись в ваш файл .gitconfig в корень вашего профиля пользователя.

[http] sslCAInfo = C:/Users/<yourname>/ca-bundle.crt

person AperioOculus    schedule 27.03.2018
comment
Спасибо, я нашел этот ответ более простым и безопасным для Windows. - person Stefano; 27.03.2020
comment
Как экспортировать сертификат в файл из браузера: medium.com/@menakajain/ - person Quad Coders; 20.08.2020
comment
Этот ответ мне особенно помог, когда вы работаете в корпоративной сети компании. - person Sumit; 13.01.2021

Я постоянно сталкиваюсь с этой проблемой, поэтому написал сценарий для загрузки самоподписанного сертификата с сервера и установки его в ~ / .gitcerts, а затем обновите git-config, чтобы он указывал на эти сертификаты. Он хранится в глобальной конфигурации, поэтому вам нужно запускать его только один раз для каждого пульта.

https://github.com/iwonbigbro/tools/blob/master/bin/git-remote-install-cert.sh

person Craig    schedule 19.12.2014
comment
Приятно, хотя было бы еще лучше иметь возможность использовать локальную конфигурацию вместо глобальной. - person Adam Spiers; 01.01.2015
comment
Вы всегда можете форкнуть его и удалить опцию --global ;-) - person Craig; 02.01.2015
comment
Это здорово, идет партиями? - person Halter; 23.04.2018

Чтобы отключить проверку SSL для определенного репозитория Если репозиторий полностью находится под вашим контролем, вы можете попробовать:

 git config --global http.sslVerify false
person Saurabh Verma    schedule 26.11.2019

Не рекомендуется устанавливать для http.sslVerify значение false. Вместо этого мы можем использовать сертификат SSL.

Таким образом, агент сборки будет использовать https с сертификатом SSL и PAT для аутентификации. введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Скопируйте содержимое файла cer, включая –begin– и –end--.

git bash в агенте сборки => git config –global http.sslcainfo «C: / Program Files / Git / mingw64 / ssl / certs / ca-bundle.crt» Перейдите в этот файл и добавьте содержимое .cer.

Таким образом, агент сборки может получить доступ к сертификату SSL.

person Palash Roy    schedule 17.02.2020
comment
Это сработало для меня. - person FMFF; 17.07.2021

Используя 64-битную версию Git в Windows, просто добавьте самоподписанный сертификат CA в эти файлы:

  • C: \ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt
  • C: \ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.trust.crt

Если это просто самоподписанный сертификат сервера, добавьте его в

  • C: \ Program Files \ Git \ mingw64 \ ssl \ cert.pem
person Flaviu    schedule 05.03.2018
comment
Это был лучший способ справиться с брандмауэром нашей компании, который повторно подписывает весь HTTPS-трафик. Я просто взял CRT-файл сертификата брандмауэра в формате PEM в виде текста и скопировал, вставил его в ca-bundle, и он работает как шарм. - person Mitten.O; 11.09.2019

Будьте осторожны при использовании одного лайнера с sslKey или sslCert, как в Джоша Пика https://stackoverflow.com/a/41253757/6309">answer:

git clone -c http.sslCAPath="/path/to/selfCA" \
  -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" \
  -c http.sslVerify=1 \
  -c http.sslCert="/path/to/privatekey/myprivatecert.pem" \
  -c http.sslCertPasswordProtected=0 \
https://mygit.server.com/projects/myproject.git myproject

Только Git 2.14.x / 2.15 (3 квартал 2015 г.) сможет правильно интерпретировать путь типа ~username/mykey (хотя он все еще может интерпретировать абсолютный путь, например /path/to/privatekey).

См. фиксацию 8d15496 (20 июля 2017 г.) от Junio ​​C Hamano (gitster).
При поддержке: Charles Bailey (hashpling).
(Объединено Junio ​​C Hamano - gitster - в commit 17b1e1d, 11 августа 2017 г.)

http.c: http.sslcert и http.sslkey - оба пути

Назад, когда был создан современный путь кода http_options () для анализа различных параметров http. * На 29508e1 («Изолировать общую функциональность HTTP-запроса», 2005-11-18, Git 0.99.9k), а затем было исправлено взаимодействие между несколькими файлами конфигурации в 7059cd9 (" http_init(): Исправить синтаксический анализ файла конфигурации ", 2009-03-09, Git 1.6.3-rc0), мы проанализировали переменные конфигурации, такие как http.sslkey, http.sslcert как простые ванильные строки, потому что git_config_pathname(), который понимает префикс "~[username]/", не существует.

Позже мы преобразовали некоторые из них (а именно, http.sslCAPath и http.sslCAInfo) для использования функции и добавили переменные, такие как http.cookeyFile http.pinnedpubkey, чтобы использовать функцию с самого начала. Из-за этого все эти переменные понимают префикс «~[username]/».

Сделайте оставшиеся две переменные, http.sslcert и http.sslkey, также осведомленными о соглашении, так как они обе явно являются путями к файлам.

person VonC    schedule 13.08.2017

Проверьте настройки антивируса и брандмауэра.

Изо дня в день git больше не работал. С помощью того, что описано выше, я обнаружил, что Касперский помещает самоподписанный личный корневой сертификат Антивируса посередине. Мне не удалось разрешить Git принять этот сертификат, следуя приведенным выше инструкциям. Я отказался от этого. Что мне подходит, так это отключение функции сканирования зашифрованных соединений.

  1. Откройте Kaspersky
  2. Настройки> Дополнительно> Сеть> Не сканировать зашифрованные соединения

После этого git снова работает с включенным sslVerify.

Примечание. Меня это все еще не устраивает, потому что я хотел бы, чтобы эта функция моего Антивируса была активной. В расширенных настройках Kaspersky показывает список веб-сайтов, которые не будут работать с этой функцией. Github не входит в их число. Проверю на форуме Касперского. Кажется, есть несколько тем, например https://forum.kaspersky.com/index.php?/topic/395220-kis-interfering-with-git/&tab=comments#comment-2801211.

person Henk    schedule 19.05.2018

Возможно, я запоздал с ответом, но у меня это сработало. Это может кому-то помочь.

Я попробовал указанные выше шаги, но это не устранило проблему.

попробуйте этоgit config --global http.sslVerify false

person Manjuboyz    schedule 19.03.2019

В Windows это сработало для меня:

Добавьте содержимое своего самозаверяющего сертификата в конец файла ca-bundle. Включая строки ----- BEGIN CERTIFICATE ----- и ----- END CERTIFICATE -----

Расположение файла ca-bundle обычно: C: \ Program Files \ Git \ mingw64 \ ssl \ certs.

После этого добавьте путь к файлу ca-bundle в глобальную конфигурацию git. Следующая команда делает свое дело: git config --global http.sslCAInfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"

Примечание: Путь зависит от вашего локального пути к файлу ca-bundle!

person rw026    schedule 24.06.2019

В файле .gitconfig вы можете добавить указанное ниже значение, чтобы сделать самоподписанный сертификат приемлемым.

sslCAInfo = /home/XXXX/abc.crt

person RahulMohan Kolakandy    schedule 09.11.2017
comment
Это эквивалентно второму шагу в ответе Адама - person Michael; 05.12.2017

Я использую компьютер с Windows и эту статью мне помогли. По сути, я открыл ca-bundle.crt в блокноте и добавил в него сертификаты цепочки (все). Эта проблема обычно возникает в корпоративных сетях, где у нас есть посредники, сидящие между системой и репозиторием git. Нам нужно экспортировать все сертификаты в цепочке сертификатов, кроме конечного сертификата в формате base 64, и добавить их все в ca-bundle.crt, а затем настроить git для этого измененного файла crt.

person love gupta    schedule 06.08.2019

Я так делаю:

git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git
person Tadej    schedule 27.10.2018
comment
Не используйте --global! Многие учебники показывают --global, но это очень плохая идея в целом и для http.sslVerify в частности. Как только у вас будет более одного клона из разных проектов, компаний, команд на компьютере, вы можете быстро столкнуться с проблемами. Например, утечка идентификатора пользователя и электронных писем из одного проекта в другой может быть довольно неприятной. А использование --global на http.sslVerify может открыть вам множество проблем с безопасностью. Итак: не используйте --global - если вы полностью не осведомлены о побочных эффектах и ​​не готовы рискнуть. - person Martin; 06.11.2018

Это работает для меня, просто запустите следующую команду

git config --global http.sslVerify false

он откроет окно учетных данных git, в котором будут указаны ваши учетные данные. в первый раз только спрашиваю

person Atchutha rama reddy Karri    schedule 23.02.2021
comment
Этот ответ уже публиковался несколько раз. - person wundermahn; 29.04.2021