Self‑Signed Certificate를 사용하여 GitLab 리포지토리 복제하는 방법
Source: Dev.to
문제 개요
자체 서명된 SSL 인증서를 사용하는 GitLab 인스턴스에서 HTTPS로 클론할 때 다음과 같은 오류가 발생할 수 있습니다:
fatal: unable to access 'https://gitlab.example.com/group/project.git/':
server certificate verification failed. CAfile: none CRLfile: none
Git은 기본적으로 자체 서명된 인증서를 신뢰하지 않으므로, 인증서를 명시적으로 신뢰하도록 설정하지 않으면 HTTPS 연결이 거부됩니다.
자체 서명 인증서 내보내기
Chrome 사용
-
Chrome에서 GitLab URL을 엽니다:
https://gitlab.example.com -
자물쇠 아이콘을 클릭 → Connection is secure → Certificate is valid.
-
Details 탭으로 이동 → Export….
-
인증서를 영구적인 위치에
gitlab-selfsigned.crt이름으로 저장합니다:- Windows:
C:\certs\gitlab-selfsigned.crt - Linux/macOS:
/home/username/certs/gitlab-selfsigned.crt
- Windows:
Firefox 사용
- Firefox에서
about:preferences#privacy를 엽니다. - Certificates 섹션까지 스크롤한 뒤 View Certificates를 클릭합니다.
- Servers 탭에서
gitlab.example.com을 찾아 선택하고 **Export…**를 클릭합니다. - 파일을
gitlab-selfsigned.crt이름으로 저장합니다.
OpenSSL 사용 (모든 플랫폼)
openssl s_client -connect gitlab.example.com:443 -showcerts 2>/dev/null \
| openssl x509 -outform PEM > gitlab-selfsigned.crt
위 명령은 GitLab에서 직접 인증서를 가져와 현재 디렉터리의 gitlab-selfsigned.crt 파일에 저장합니다.
Git에 인증서 신뢰하도록 설정
# Windows 예시
git config --global http.sslCAInfo "C:/certs/gitlab-selfsigned.crt"
# Linux/macOS 예시
git config --global http.sslCAInfo "/home/username/certs/gitlab-selfsigned.crt"
설정 확인
git config --global --get http.sslCAInfo
위 명령은 방금 설정한 경로를 출력해야 합니다.
HTTPS로 저장소 클론
git clone https://gitlab.example.com/group/project.git
인증서를 신뢰하도록 설정했으므로 SSL 오류 없이 클론이 성공합니다.
SSH 사용 (인증서 문제 없음)
SSH 키 생성
ssh-keygen -t ed25519 -C "your_email@example.com"
공개 키 추가
~/.ssh/id_ed25519.pub 파일을 GitLab User Settings → SSH Keys → Add Key를 통해 추가합니다.
SSH로 클론
git clone git@gitlab.example.com:group/project.git
SSL 검증 일시적으로 비활성화 (권장되지 않음)
git config --global http.sslVerify false
⚠️ Warning: 검증을 비활성화하면 보안이 취약해져 MITM 공격에 노출됩니다. 단기적인 문제 해결 단계에서만 사용하고, 절대 프로덕션 환경에서는 사용하지 마세요.
PyCharm에서 Git 설정
- File → Settings → Version Control → Git을 엽니다.
- Path to Git executable이 앞서 설정한 Git 실행 파일을 가리키는지 확인합니다.
- Test 버튼을 눌러 실행 파일이 정상 동작하는지 확인합니다.
- HTTPS를 사용할 경우, PyCharm이 사용하는 Git에도 동일한
http.sslCAInfo설정이 적용되었는지 확인하거나, SSH로 전환합니다.
자체 서명 GitLab을 위한 권장 워크플로우
- 자체 서명 인증서를 내보냅니다 (Chrome, Firefox, OpenSSL 중 선택).
http.sslCAInfo가 내보낸.crt파일을 가리키도록 Git을 전역 설정합니다.- HTTPS로 저장소를 클론하거나, 인증서 처리를 완전히 피하기 위해 SSH를 사용합니다.
- 절대로
http.sslVerify를 영구적으로 비활성화하지 마세요.