문제 상황
Mac 환경에서 ngrok을 실행하려고 할 때 다음과 같은 SSL 인증서 오류가 발생했었습니다.
현재 Python의 환경은 3.12를 사용하고 있습니다.
(venv) (base) seok ~/Documents/PythonTest > ngrok http 3000
Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/urllib/request.py", line 1344, in do_open h.request(req.get_method(), req.selector, req.data, headers, File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/http/client.py", line 1336, in request self._send_request(method, url, body, headers, encode_chunked) ... ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)
이 오류는 Python이 SSL 인증서를 검증할 수 없어서 발생하는 문제로 Mac에서 Python 3.12을 사용할 때 이전 버전보다 자주 발생 되는 듯합니다.
해결 방법
1. Python 인증서 설치 스크립트 실행 (기본)
/Applications/Python\ 3.12/Install\ Certificates.command
SSL 인증서를 업데이트를 하기 때문에 정상적으로 실행이 됩니다.
2. 다시 ngrok 실행
ngrok http 3000
다시 명령어를 실행하면 에러 없이 가능합니다.
해결 방법 2: SSL 검증 비활성화 (비추천)
만약 위 방법이 작동하지 않는다면 SSL 검증을 비활성화하는 방법도 있습니다. 하지만 보안 위험이 있어서 테스트용으로만 사용하는게 좋다고 생각합니다.
export CURL_CA_BUNDLE=""
export SSL_CERT_FILE=""
ngrok http 3000
이 방법은 인증서 검증을 아예 비활성화하는 것이므로 인증서 문제를 근본적으로 해결하는 방법은 아닙니다.
해결 방법 3: ngrok 수동 다운로드 및 설치
만약 위 방법이 모두 실패하면, ngrok을 수동으로 다운로드해서 직접 설치할 수도 있습니다.
1. ngrok 공식 사이트에서 다운로드(Mac용 ngrok을 다운로드)
2. 압축 해제 후 이동
unzip ngrok-darwin-arm64.zip
mv ngrok /usr/local/bin/
3. 설치 확인
ngrok --version
4. 다시 실행
ngrok http 3000
결론
이 문제는 Mac의 Python 3.12 환경에서 SSL 인증서 검증 실패 문제로 Python이 SSL 요청을 보낼 때 신뢰할 수 있는 루트 인증서를 찾지 못하면 위와 같은 오류가 발생하게 됩니다.
왜 추천 해결 방법이 가장 좋은지?
Python 3.12에서는 인증서가 자동으로 설치되지 않는 경우가 있기 때문에 /Applications/Python\ 3.12/Install\ Certificates.command 명령어로 신뢰할 수 있는 인증서를 시스템에 추가하여 SSL 요청을 정상적으로 처리되도록 설정할 수 있습니다. 이는 ngrok뿐만 아니라 다른 SSL을 사용하는 Python 라이브러리(ex. requests, urllib)에서도 동일한 문제를 해결 가능합니다.
'버그처리' 카테고리의 다른 글
AWS RDS Oracle 라이선스 변경 시 오류 해결 (1) | 2025.02.14 |
---|---|
Superset ERROR: Could not build wheels for python-geohash, which is required to install pyproject.toml-based projects 에러 (0) | 2023.11.13 |
MySQL Read Only 에러 해결 (0) | 2023.06.19 |
MySQL Safe Mode 에러 해결 (0) | 2023.06.19 |
ERROR: Could not install packages due to an OSError: [Errno 28] No space left on device (0) | 2023.05.22 |