Фон
Наша организация распространяет внутренние сертификаты, используя групповую политику на нашем контроллере домена. Для наших установок git это означает, что нам нужно будет использовать библиотеку 'Windows Secure Channel' для HTTPS-соединений, а не OpenSSL.
Проблема
Попытка подключиться к удаленному репозиторию Git с использованием VS2019 Enterprise в комплекте Git с schannel завершается с ошибкой:
schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - The revocation function was unable to check revocation because the revocation server was offline
Эта ошибка появляется как при использовании пользовательского интерфейса VS2019 для попытки синхронизации c с репозиторием, так и при запуске его через командную строку. (Путь к исполняемому файлу, который я использую, равен C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\cmd\git.exe
)
Однако, если я запустил исполняемый файл git в комплекте с VS2017, я могу успешно синхронизировать c с репо (исполняемый путь: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\cmd\git.exe
). ОДНАКО, если я открываю VS2017 и пытаюсь использовать пользовательский интерфейс, я получаю ту же ошибку schannel, что и выше!
Сводка
Выполнение автономной установки git и его настройка с помощью Windows Secure Channel успешно подключается к удаленному репозиторию.
VS2019 в комплекте git не работает при использовании интерфейса IDE или командной строки.
VS2017 в комплекте git работает в командной строке, но не через интерфейс IDE.
Файлы конфигурации
Мой глобальный .gitconfig выглядит так:
[user]
name = xxx
email = xxx@xxx.com
[http]
sslBackend = schannel
VS2019 .gitconfig выглядит так:
[core]
symlinks = false
autocrlf = true
[color]
diff = auto
status = auto
branch = auto
interactive = true
[pack]
packSizeLimit = 2g
[help]
format = html
[diff "astextplain"]
textconv = astextplain
[rebase]
autosquash = true
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[include]
; include Git for Windows' system config in order
; to inherit settings like `core.autocrlf`
path = C:/Program Files (x86)/Git/etc/gitconfig
path = C:/Program Files/Git/etc/gitconfig
VS2017 .gitconfig выглядит так (точно так же, как VS2019):
[core]
symlinks = false
autocrlf = true
[color]
diff = auto
status = auto
branch = auto
interactive = true
[pack]
packSizeLimit = 2g
[help]
format = html
[diff "astextplain"]
textconv = astextplain
[rebase]
autosquash = true
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[include]
; include Git for Windows' system config in order
; to inherit settings like `core.autocrlf`
path = C:/Program Files (x86)/Git/etc/gitconfig
path = C:/Program Files/Git/etc/gitconfig