Брандмауэр вашей компании установил прокси, который действует как человек посередине .Для этого он создает сертификаты для посещаемых вами сайтов, например, github.com.Эти сертификаты, очевидно, имеют другого эмитента (внутренний центр сертификации вашей компании), которому git-клиент по умолчанию не будет доверять.Отключение sslVerify
заставляет клиента git принимать любой сертификат от любого эмитента.Это потенциально опасно.Ваш первоначальный подход - добавить CA вашей компании в список эмитентов, которым доверяет git-клиент, - ИМХО - лучший способ позволить вашему git-клиенту общаться с github.com из-за брандмауэра вашей компании.
Так почемуРазве эта настройка не позволяет вам push
?Другие постеры упустили из виду то, что ошибка в этом случае , а не ошибка SSL.Только ваш клиент видит сертификат вашей компании.Если это решено, это решено.Github не видит этот сертификат.Поэтому дальнейшая подстройка с настройками SSL не поможет.
Я мог бы воспроизвести ваш случай, поскольку впервые увидел проблему с самозаверяющим сертификатом SSL, которая исчезла, когда я добавил сертификат прокси-сервера в sslCAInfo
.Плохая новость: я мог не воспроизвести Ошибка аутентификации Ошибка.Толчок к GitHub просто работал.Хорошая новость: можно нажать на github из настроек, аналогичных вашим.
Если это не проблема SSL, то это может быть вызвано только прокси.Поскольку прокси-сервер представляет свой собственный сертификат клиенту, он может расшифровать трафик SSL и выполнить глубокую проверку обмена данными.Прокси-сервер имеет возможность отключить определенные команды, ограничить доступ к определенным сайтам или убрать имя пользователя / пароль из запросов.
Пожалуйста, обратитесь к специалистам по ИТ-безопасности в вашей компании.Они должны уметь выяснить, накладывает ли прокси ограничения на доступ для github или для определенных команд git.
Обновление
Маршрутизация трафика Git через Fiddler может быть выполнена следующим образом (используйте git из командной строки):
- Запустите Fiddler
- В git bash перейдите в рабочую директорию cd и добавьте опции
-c http.sslVerify=false -c http.proxy=127.0.0.1:8888
в команду git.
Пример:
$ git -c http.sslVerify=false -c http.proxy=127.0.0.1:8888 push
В Fiddler вы должны увидеть что-то вроде:
2 200 HTTP Tunnel to github.com:443 0 git-remote-https:6512
3 401 HTTPS github.com /xxx/xxxx.git/info/refs?service=git-receive-pack [...]
4 200 HTTPS github.com /xxx/xxxx.git/info/refs?service=git-receive-pack [...]
Или, экспортированные с краткой сводкой (Ctrl / Shift / T):
CONNECT http://github.com:443
200 Connection Established ()
GET https://github.com/xxx/xxxx.git/info/refs?service=git-receive-pack
401 Authorization Required (text/plain)
GET https://github.com/xxx/xxxx.git/info/refs?service=git-receive-pack
200 OK (application/x-git-receive-pack-advertisement)
На правой панели Fiddler Web Debugger вы можете дополнительно изучить данные, которыми обменивались.Специально для последнего из трех запросов, показанных выше, вы должны увидеть что-то подобное на вкладке «Заголовки»:
GET /xxx/xxxx/info/refs?service=git-receive-pack HTTP/1.1
Host: github.com
Authorization: Basic XyzzY1337qQ=
User-Agent: git/2.13.0.windows.1
Accept: */*
Accept-Encoding: gzip
Pragma: no-cache
Таким образом, вы можете доказать, что ваш клиент действительно отправил информацию об авторизации.Если нет, меня бы очень заинтересовали результаты.