Python 환경에서 pip를 이용하여 패키지를 설치할 때, 다음과 같은 오류가 발생하는 경우가 있습니다.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate:
HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/
(Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed:
certificate is not yet valid (_ssl.c:1006)'))) - skipping
이 오류는 SSL 인증서 검증 실패로 인해 패키지를 정상적으로 내려받지 못하는 상황을 의미합니다. 특히, 메시지 중 “certificate is not yet valid” 부분은 인증서가 아직 유효하지 않다고 판정되었음을 보여줍니다. 대부분의 경우, 이는 서버 문제보다는 로컬 PC의 시간이나 인증서 설정 문제로 발생합니다.
1. 시스템 시간 확인 및 동기화
가장 먼저 확인해야 할 것은 시스템의 현재 시간과 날짜입니다.
PC 시간이 과거로 설정되어 있으면, SSL 인증서가 아직 유효하지 않은 것으로 잘못 인식될 수 있습니다.
Linux에서 시간은 다음과 같이 확인합니다.
date
sudo timedatectl set-ntp true
Windows에서는 "제어판 → 날짜 및 시간 → 인터넷 시간 동기화" 메뉴를 통해 시간을 설정할 수 있습니다.
2. CA 인증서 갱신
시스템에 설치된 CA 인증서가 오래되었거나 손상된 경우에도 문제가 발생할 수 있습니다. 운영체제에 따라 아래 명령어로 갱신할 수 있습니다.
- Ubuntu / Debian 계열
sudo apt-get update
sudo apt-get install --reinstall ca-certificates
- RedHat / CentOS 계열
sudo yum reinstall ca-certificates
- Windows (Python 내장 certifi 갱신)
python -m pip install --upgrade certifi
3. pip 업그레이드
오래된 pip 버전은 SSL 처리 관련 버그를 포함할 수 있습니다. 아래 명령어로 pip 자체를 최신 버전으로 업그레이드하시길 권장드립니다.
python -m pip install --upgrade pip
4. 임시 해결책 (권장하지 않음)
보안적으로 바람직하지는 않지만, 테스트 목적이라면 SSL 검증을 생략하고 설치할 수도 있습니다.
pip install <패키지명> --trusted-host pypi.org --trusted-host files.pythonhosted.org
다만, 이 방법은 SSL 검증을 비활성화하는 것이므로 보안상 위험이 따르며, 근본적인 문제 해결은 되지 않습니다.
맺는말
위 오류는 대체로 로컬 PC의 시간이 정확하지 않거나, 인증서가 갱신되지 않은 경우 발생합니다.
따라서 먼저 시스템 시간을 확인 후, 맞지 않는다면 시각 동기화로 현재 시각을 정확하게 설정합니다.
그리고, 필요하다면 CA 인증서와 pip, certifi 패키지를 최신 상태로 갱신합니다.
안정적인 Python 개발 환경을 유지하기 위해서는 보안 인증서와 도구들을 꾸준히 최신 상태로 관리하는 것이 중요합니다.
'프로그래밍 > Python' 카테고리의 다른 글
| [python] BytesIO에서 "read()"로 읽을 데이터 유무 확인 방법 (0) | 2025.10.13 |
|---|---|
| [python] "unittest"에서 "await"와 "run_until_complete()"의 차이점 (0) | 2025.09.17 |
| [python] 네트워크 시험에서 Stub와 Driver의 개념과 예제 (0) | 2025.07.03 |
| [python] "@dataclass"를 활용하여 클래스 작성을 빠르게 해보자 (0) | 2025.07.02 |
| [python] 비동기 IO에서 코루틴과 태스크의 차이점은? (0) | 2025.06.28 |