[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 - 버전관리]' 카테고리의 다른 글
[Git] first commit 하기 & git ignore가 동작하지 않을 때(git cache 삭제) (0) | 2024.05.13 |
---|---|
[Git] cherry-pick: 다른 branch commit 복사해오기 (0) | 2022.05.26 |
[Git] pull 되돌리기 & 원격에 올라간 commit 되돌리기 (0) | 2022.05.26 |
[Git] local branch 생성/삭제 & remote branch 연동/삭제 (0) | 2022.05.26 |