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