Добавление самоподписанного SSL-сертификата без отключения полномочий, подписанных

У меня есть корпоративный сервер git, работающий через https с использованием самозаверяющего сертификата. Локальный клон содержит два пульта - источник, указывающий на этот сервер, а другой - на github. По умолчанию вытаскивание из источника не выполняется:

$ git pull
fatal: unable to access 'https://[email protected]/git/fizzbuzz.git/': SSL certificate problem: self signed certificate

Удаленное управление github отлично работает.

Существует два часто предлагаемых решения:

git config http.sslVerify false

что является плохой идеей, а другая предложила configure git принять конкретный сертификат самоподписанного сервера для конкретного https-сервера:

git config http.sslCAInfo <downloaded certificate>.pem

который фиксирует вытягивание с начала координат, но размыкает пульт github:

$ git pull github
fatal: unable to access 'https://github.com/user/fizzbuzz.git/': SSL certificate problem: unable to get local issuer certificate

Как заставить потянуть с корпоративного сервера работать, не нарушая притяжения с github?

Ответ 1

Если вы используете Git 1.8. 5+ (август 2013 г.), вы можете указать http-директивы для каждого URL (!).

В твоем случае:

git config --global http."https://code.example.com/".sslVerify false
#
# or, if not on default 443 port:
#
git config --global http."https://code.example.com:<aPort>/".sslVerify false

Это отключило бы проверку SSL только для code.example.com, но не для других URL.

Или же:

git config --global http."https://code.example.com/".sslCAInfo <downloaded certificate>.pem

Та же идея: sslCAInfo будет указывать на <downloaded certificate>.pem только для URL code.example.com.

Можно добавить свой сертификат в хранилище сертификатов системы Git, которое с помощью git-for-windows будет находиться в C:\path\to\PortableGit-2.6.1-64-bit\usr\ssl\certs\ca-bundle.crt.
Это не лучшая практика, если только вам не нужно распространять дистрибутив Git с внутренними сертификатами в нем.

Ответ 2

Как и в версии 2.5.0 для Git для Windows (git -for-windows.github.io), установленный файл сертификата переместился в "C:\Program Files (x86)\Git\mingw32\SSL\сертификаты\ча-bundle.crt". Вы должны добавить свои сертификаты в этот файл.