[개발 공부]/[Git - 버전관리]

[Git] SSL 에러: SSL certificate problem: unable to get local issuer certificate 3가지 해결방법

wild keyboardist 2022. 2. 16. 11:55

[Git] SSL 에러 : SSL certificate problem: unable to get local issuer certificate

 

 

 

 

 

 

 

 

  • SSL Certificate 란?

SSL 은 Secure Sockets Layer 의 약자로써,

웹 서버 - 웹 브라우저 간의 암호화된 링크를 생성하여 사용자와 웹 사이트 간의 통신을 보호한다.

 

 

 

 

 

 

 

 



어느 날 갑자기, 문제없던 git에서 pull을 하려니 아래와 같은 에러가 떴다!

 

 

Git Pull Failed: unable to access 
'https://git.주소.com" : SSL certificate problem: unable to get local issuer certificate

 

 

 

해당 문제는 내 local의 SSL 인증서가 self-signed 일 때 주로 발생한다고 하는데,

이 에러가 발생했다는 것은 서버와 클라이언트 간 안전한 통신이 확보되지 않으므로, 

git 이 pull, push, clone 등의 행위를 보안상의 이유로 막았다는 것이다. 

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

아래 세가지 해결 방법을 소개하는데, 사실 나는 세번째 방법으로 해결되었다. 여러 방법을 시도해보길 추천한다.

 

 

 

 

 


1) 가장 간단한 해결방법은 git terminal 을 이용하여 일시적으로 SSL 검증을 해제하는 건데, 사실 미봉책이기도 하고,
신뢰할 수 없는 웹이라면 보안상 취약할 수 있어 사용하지 않기를 권유한다고 한다.

 

 


검증 해제 (disable) :

 

$ git config --global http.sslVerify false



 


검증 적용 (enable) :

 

$ git config --global http.sslVerify true

 

 

 

 

 

 

 

 

 

 

 

2) git 서버에서 직접 certificate 를 다운받아 업데이트 해주는 방법이 있는데 아래 스텝들을 따라하면 쉽게할 수 있다.

 

 

//깃 서버에서 인증서 내려받기
1. 브라우저를 통해 연결하고자 하는 깃 서버에 접속한다.
2. 주소창 옆 좌물쇠 모양을 클릭한 후, 팝업창이 뜨면 한번 더 좌물쇠 모양을 클릭한다.
3. "인증서가 유효함" 을 클릭하면 인증서를 볼 수 있는 창이 열린다.
4. "인증경로" 탭으로 이동하여 가장 상위의 인증서를 선택 후, "인증서 보기"를 클릭한다.
5. 새로운 창이 나타나면, "자세히" 탭으로 이동 > 파일에 복사 > 다음 > Base 64 encoded X509(.CER)
6. 아무경로에나 저장한다.



//다운받은 인증서를 기존 인증서에 추가하기
1. 다운받은 인증서를 notepad 를 사용하여 open.(메모장도 가능)
2. --Begin Certificate 부터 --End Certificate 까지 전부 복사한다.
3. cmd 창을 열어서, git config --list 입력
4. 결과 중 'http.sslcainfo' 를 보면 기존 인증서의 위치가 나온다.
//default 위치는 C:\ProgramFiles\Git\mingw64\ssl\certs
5. ca-bundle.crt 파일을 마찬가지로 notepad 를 사용하여 open.
//작업하기 전 백업파일 만들어 놓는 것을 잊지말자 
6. 맨 밑으로 이동하여 아까 복사해 둔 --Begin Certificate 부터 --End Certificate 를 붙여넣는다.
7. 인텔리제이 종료 후 재시작하면 끝

 

 

 

 

 

 

 

 

 

 

 

 

3) git 은 사실 기본적으로 "Linux" crypto backend 를 사용한다고 한다. 하지만 Windows 에서 하고 있는 우리들은!

기본 설정인 "Linux" crypto backend 를 "SChannel" 이라는 built-in Windows networking layer 로 변경할 수 있다.

쉽게 말해서 Linux 기반을 Windows 기반으로 변경해주는 것이다.

아래 명령어를 git terminal 에 입력한다.

 

 

$ git config --global http.sslbackend schannel

 

 

 

 

 

 

 

 

 

 

 

 

Git 에 이미 올라간 commit 을 되돌리고 싶다면?

https://devinserengeti.tistory.com/32?category=917422

 

[Git] pull 되돌리기 & 원격에 올라간 commit 되돌리기

[Git] pull 되돌리기 & 원격에 올라간 commit 되돌리기 git 을 사용하여 협업하다보면, 실수하거나, 뭔가 버그가 있어서 되돌리고 싶은 경우가 있다. 간단히 정리해보자 1) pull or merge 의 취소 remote

devinserengeti.tistory.com