Git은 .gitconfig에서 http.sslcainfo 속성을 인식하는 것 같지만 실행시 무시합니까? SEC_E_UNTRUSTED_ROOT


10

모두 작동하는 인증서 체인 (OpenSSL로 테스트 가능)이 있지만 어떻게 든 Git 에게이 인증서를로드하도록 지시 할 수는 없습니다.

내가 얻을 같은 "신뢰할 수없는 루트 권한"오류 (SEC_E_UNTRUSTED_ROOT)를 독립적으로 기존 또는 가짜 인증서 체인 파일에 내 자식 구성 점 여부의.

자세한 내용은 첨부 된 스크린 샷을 확인하십시오.여기에 이미지 설명을 입력하십시오

.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 구성에 오타가 있습니다 : tmp 대신 tml
Tensibai

이상한 git이 fakepath와 함께 오류를 일으키지 않는다는 것을 알았습니다. 어딘가에 다른 구성 수준 (전역, 사용자 및 저장소)이 있는지 확인해야합니다.
Tensibai

@ Tensibai는 설명서를 인쇄하거나 문서에 대한 링크를 제공하십시오. 예를 들어 git config --global --list가 작동하지 않습니다.
Peter Muryshkin

망할 놈의 설정 --get-모든 시스템, 글로벌과 로컬 (I 전화에있어, 그 그냥 추측 확인할 수 없습니다에서 모든 결과 구성을 보여주기 위해 어떻게해야 해결 될 수 set SSL_CERT_FILE=C:\tmp\ca-bundle.crt번들을 어디서 찾을 수 있는지 OpenSSL이에게
Tensibai

C:\git config --get-all-- => error: wrong number of arguments
피터 Muryshkin

답변:


2

새로 설치 한 직후에 오늘이 문제에 부딪 쳤으므로 다음과 같이 극복했습니다.

당신의 통나무에서 (강조는 나의 것입니다) :

치명적 : 액세스 할 수 없음 ... : schannel : 다음 InitializeSecurityContext 실패 :

git은 schannel (Windows 고유 구현)을 사용하도록 구성되었지만 schannel은 cainfo 번들이 아닌 windows certs 번들을 사용합니다.

사용자 정의 번들 파일을 사용하기 위해 openssl로 전환하려면 다음을 사용하십시오.

git config --system http.sslbackend openssl

이제 git은 http.sslcainfo에 전달 된 CA 번들을 사용합니다.

또는 내 오류가 cypher suite의 문제이므로 다음 링크에 관심이있을 수 있습니다.


1

나는 1 년 전에 비슷한 것을 가졌으므로 기억하기를 바랍니다.

crt 파일에 모든 인증서 체인이 있어야합니다. 비트 버킷 인증서와 루트 인증서 (포함) 사이에 모든 중간 인증서가 있는지 확인하십시오.

당신은 이상 (필자는 CRT와 사건이라고 생각)에 PEM 형식을 추가에 대한 올바른 형식으로 살펴 수 있습니다 여기를 .

내 인증서는 해당 문제가 발생했을 때 Comodo가 서명했으며 인증서와 중간 인증서는 대부분의 시스템에서 제공하는 기본 ca 번들에 없었습니다.

희망이 도움이됩니다!

편집 : 이제 가짜 인증서에서도 발생한다는 것을 알았습니다. 시스템의 기본 알려진 인증서를 확인하십시오 (각 시스템에는 그러한 시스템이 있습니다). Windows 에서는 Windows 인증서 mmc 스냅인으로 이동할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.