자체 서명 된 인증서가있는 Windows에서 git을 사용하여 “로컬 발급자 인증서를 가져올 수 없음”을 확인할 수 없습니다 오류 메시지없이 HTTPS 저장소

Windows에서 Git을 사용하고 있습니다. msysGit 패키지를 설치했습니다. 테스트 저장소에는 서버에 자체 서명 된 인증서가 있습니다. 문제없이 HTTP를 사용하여 저장소에 액세스하고 사용할 수 있습니다. HTTPS로 이동하면 오류가 발생합니다.

SSL 인증서 문제 : 로컬 발급자 인증서를 가져올 수 없습니다.

Windows 7 클라이언트 시스템의 신뢰할 수있는 루트 인증 기관에 자체 서명 된 인증서가 설치되어 있습니다. Internet Explorer에서 오류 메시지없이 HTTPS 저장소 URL을 탐색 할 수 있습니다.

Philip Kelley의이 블로그 게시물 은 cURL이 클라이언트 시스템의 인증서 저장소를 사용하지 않는다고 설명했습니다. 블로그 게시물의 조언에 따라 개인 복사본을 만들고 curl-ca-bundle.crt그것을 사용하도록 Git을 구성했습니다. Git이 내 사본을 사용하고 있다고 확신합니다. 사본의 이름을 바꾸면 힘내 파일이 없다고 불평합니다.

블로그 게시물에 언급 된대로 인증서에 붙여 넣었지만 여전히 “로컬 발급자 인증서를 얻을 수 없습니다”라는 메시지가 나타납니다.

HTTPS를 통해 GitHub 리포지토리를 복제하여 Git이 여전히 작동하는지 확인했습니다.

블로그 게시물과 다른 점은 내 인증서 루트라는 것입니다. 체인에 연결할 체인이 없습니다. 내 인증서는 원래 IIS8 IIS 관리자 링크 ‘자체 서명 된 인증서 만들기’를 클릭하여 생성되었습니다. 어쩌면 cURL이 기대하는 것과 다른 방식으로 인증서를 만들 수 있습니다.

자체 서명 된 인증서를 수락하도록 Git / cURL을 받으려면 어떻게해야합니까?



답변

SSL 확인을 완전히 비활성화하려면 Git Bash를 열고 명령을 실행하십시오.

git config --global http.sslVerify false

참고 :이 솔루션을 사용하면 중간자 공격과 같은 공격을받을 수 있습니다. 따라서 가능한 빨리 확인을 다시 켜십시오.

git config --global http.sslVerify true

답변

문제는 기본적으로 “Linux”암호화 백엔드를 사용하는 자식입니다.

Windows 2.14 용 Git부터는 기본 제공 Windows 네트워킹 계층 인 SChannel을 암호화 백엔드로 사용하도록 Git을 구성 할 수 있습니다. 이는 Windows 인증서 저장 메커니즘을 사용하고 curl CA 저장 메커니즘을 명시 적으로 구성 할 필요가 없음을 의미합니다. https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v= vs.85) .aspx

그냥 실행하십시오 :

git config --global http.sslbackend schannel

도움이 될 것입니다.

schannel을 사용하는 것은 이제 Windows 용 git을 설치할 때 표준 설정이며, https가 구성하기 쉽고 방화벽에 의해 차단 될 가능성이 적기 때문에 가능한 경우 SSH로 저장소를 체크 아웃하지 않는 것이 좋습니다. 실패 가능성이 적습니다.


답변

나는이 문제도 가지고 있었다. 필자의 경우, 푸시 할 때마다 서버에서 작업 사본을 업데이트하기 위해 수신 후 Git 후크를 얻으려고했습니다. 링크 한 블로그의 지침을 따르려고했습니다. 나에게도 효과가 없었으며 사용자별로 설정을 재정의하는 것도 효과가없는 것 같습니다.

내가해야 할 일은 Git에 대한 SSL 확인 (문서에서 언급했듯이)을 비활성화하는 것이 었습니다. 완벽한 솔루션은 아니지만 더 나은 솔루션을 찾을 때까지 작동합니다.

Git 구성 텍스트 파일을 편집했습니다 (Notepad ++와 같은 좋아하는 줄 끝 중립 앱 사용).

C : \ 프로그램 파일 (x86) \ Git \ etc \ gitconfig

[http] 블록에서 sslVerify를 비활성화하는 옵션을 추가했습니다. 내가 끝났을 때 이렇게 보였다 :

[http]
    sslVerify = false
    sslCAinfo = /bin/curl-ca-bundle.crt

그 트릭을했다.

노트:

  • 이는 SSL 확인을 비활성화하며 장기 솔루션으로 권장되지 않습니다.

  • 이 저장소별로 비활성화해도 여전히 좋지는 않지만 설정을 현지화합니다.

  • LetsEncrypt.org가 등장하면서 자체 서명 인증서 대신 SSL을 설정하는 것이 매우 간단하고 자동화되었으며 무료이며 sslVerify를 끌 필요가 없습니다.


답변

키 덜리 꽤 가깝다고 생각하지만 SSL 확인을 비활성화하지 않고 오히려 로컬 인증서를 제공합니다.

Git 설정 파일에서

[http]
    sslCAinfo = /bin/curl-ca-bundle.crt

또는 명령 줄을 통해 :

git config --global http.sslCAinfo /bin/curl-ca-bundle.crt

답변

나는 또한이 문제에 직면했다. 그리고 마지막 으로이 MSDN 블로그 에서 지침을 받아 해결되었습니다 .

최신 정보

실제로 Git \ bin 디렉토리에있는 git의 인증서 파일 curl-ca-bundel.cert에 인증서를 추가해야합니다.

단계

  1. 브라우저에서 github 페이지를 열고 주소 표시 줄에서 자물쇠 아이콘을 클릭하십시오.
  2. 열린 작은 팝업에서 ‘인증서보기’링크로 이동하면 팝업 창이 열립니다.
  3. 인증서 탭으로 이동합니다 (필자의 경우 세 번째). 루트 인증서 인 최상위 노드를 선택하십시오. 그리고 하단의 인증서 복사 버튼을 누르고 파일을 저장하십시오.
  4. 파일 탐색기에서 Git \ bin 디렉토리를 탐색하고 텍스트 편집기에서 curl-ca-bundle.crt를 엽니 다.
  5. 텍스트 편집기에서 내 보낸 인증서 파일 (3 단계)도 엽니 다.
  6. 내 보낸 인증서의 모든 내용을 curl-ca-bundle.crt의 끝으로 복사하고 저장하십시오.

마지막으로 상태를 확인하십시오. 안전한면을 유지하기 위해 편집하기 전에 backup curl-ca-bundle.crt 파일을 참고하십시오.


답변

이 질문에 대한 답변 개발 용 SSL을 사용하여 SSL을 수정했습니다.

이유를 모르겠지만 IIS 관리자의 간단한 ‘자체 서명 된 인증서 만들기’링크로 만든 인증서는 트릭을 수행하지 않습니다. 자체 서명 된 CA 루트를 만들고 설치하는 관련 질문의 접근 방식을 따랐습니다. 그런 다음이를 사용하여 서버에 대한 서버 인증 인증서를 발급합니다. IIS에 둘 다 설치했습니다.

그것은 원래 상황에서 언급 된 블로그 게시물과 같은 상황을 얻습니다. 루트 인증서가 curl-ca-bundle.crt에 복사 / 붙여 넣기되면 git / curl 콤보가 만족됩니다.


답변

ssl 확인을 완전히 비활성화하거나 git에서 사용하는 번들로 제공된 CA 인증서 파일을 복제 / 해킹하는 것을 피하기 위해 호스트의 인증서 체인을 파일로 내보내고 git에서 사용하도록 할 수 있습니다.

git config --global http.https://the.host.com/.sslCAInfo c:/users/me/the.host.com.cer

그래도 작동하지 않으면 호스트에 대해서만 SSL 확인을 비활성화 할 수 있습니다 .

git config --global http.https://the.host.com/.sslVerify false

참고 : SSL 인증이 꺼져있을 때 중간 공격에서 사람을 대상으로합니다.