Git, кажется, распознает свойство http.sslcainfo из .gitconfig, но игнорирует его при выполнении? SEC_E_UNTRUSTED_ROOT


10

все, у меня есть рабочая цепочка сертификатов (тестируемая с OpenSSL), но как-то мне не удается сказать Git загрузить эти сертификаты.

Я получаю ту же ошибку «недоверенного корневого администратора» (SEC_E_UNTRUSTED_ROOT) независимо от того, указывает ли моя конфигурация git на существующий или поддельный файл цепочки сертификатов.

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

Настройка, которую я использую .gitconfigдля поддельного файла:

sslCAInfo = C:/tmp/foobar.crt

или для реального файла, который работает с OpenSSL:

sslCAInfo = C:/tmp/ca-bundle.crt

Консольная стенограмма:

C:\tmp>openssl version
OpenSSL 0.9.8h 28 May 2008

C:\tmp>git --version
git version 2.12.2.windows.2

C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/ca-bundle.crt

C:\tmp>dir
24.04.2017 13:45 10.875 ca-bundle.crt

c:\tmp>openssl s_client -state -connect https://mygithost:443 -CAfile .\ca-bundle.crt

Verify return code: 0 (ok)

C:\tmp git clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.

C:\tmp> git -c http.sslverify=false clone https://mygithost/bitbucket/scm/my.git
Cloning into ...
Resoliving deltas: 100%, done.

C:\tmp>git config --list
http.sslverify=true
http.sslcainfo=C:/tmp/foobar.crt

C:\tmp\xxx\git pull
fatal: unable to access ... : schannel: next InitializeSecurityContext failed: SEC_E_UNTRUSTED_ROOT (0x80090325) - The certificate chain was issued by an authority that is not trusted.

В вашей конфигурации git есть опечатка: tml вместо tmp
Tensibai

Я нахожу это странным, мерзавец не вызывает ошибку с FakePath. Вы должны проверить другие уровни конфигурации (глобальный, пользовательский и репо), возможно, где-то есть запасной вариант
Tensibai

@ Тенсибай, пожалуйста, предоставьте инструкции или ссылку на документы, не знаете, как распечатать все это. например, git config --global --list не работает.
Петр

Git config --get-all должен делать, чтобы показать каждую полученную конфигурацию из системы, глобальной и локальной (не могу проверить, что я на телефоне, и это только предположение, можно обойти это, set SSL_CERT_FILE=C:\tmp\ca-bundle.crtчтобы сообщить openssl, где найти пакет
Tensibai

C:\git config --get-all-- => error: wrong number of arguments
Петр

Ответы:


2

Это произошло сегодня, после новой установки, и вот как я с этим справился:

Из ваших логов (акцент мой):

фатальный: невозможно получить доступ ...: schannel : следующий InitializeSecurityContext не удалось:

git настроен на использование schannel (собственная реализация Windows), но schannel использует пакет сертификатов Windows, а не пакет cainfo.

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

git config --system http.sslbackend openssl

И теперь git будет соблюдать пакет CA, переданный в http.sslcainfo.

В качестве альтернативы, поскольку моя ошибка была проблемой Cypher Suite, вас могут заинтересовать следующие ссылки:


1

У меня было нечто подобное год назад, поэтому я надеюсь, что я помню -

У вас должна быть вся цепочка сертификатов в файле crt. Убедитесь, что у вас есть все промежуточные сертификаты между вашим сертификатом bitbucket и корневым (включительно).

Вы можете взглянуть на правильный формат для добавления их в формате pem (который, я считаю, ваш случай с crt) здесь .

Мой сертификат был подписан Comodo, когда у меня возникла эта проблема, их сертификат и промежуточное соединение не входили в стандартный пакет, поставляемый большинством систем.

Надеюсь, это поможет!

Изменить: Теперь я заметил, что это происходит и с поддельным - попробуйте проверить системные сертификаты, известные по умолчанию (у каждой системы есть такие). На окнах вы можете перейти к оснастке Windows Certificates mmc .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.