Traceback (most recent call last):
File "urllib\request.py", line 1344, in do_open
File "http\client.py", line 1336, in request
File "http\client.py", line 1382, in _send_request
File "http\client.py", line 1331, in endheaders
File "http\client.py", line 1091, in _send_output
File "http\client.py", line 1035, in send
File "http\client.py", line 1477, in connect
File "ssl.py", line 455, in wrap_socket
File "ssl.py", line 1041, in _create
File "ssl.py", line 1319, in do_handshake
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)
가상 머신에서 Windows 11로 코드 돌리는데,
request 하면 handshake 실패했다고 뜨네
이거 가상머신 뭐 방화벽 이런 문제임? 인터넷 연결은 되어있음
이 에러 메시지: ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate 는 Python이 HTTPS 요청을 보낼 때 서버의 SSL 인증서를 검증하려고 시도하는데, 로컬에 신뢰할 수 있는 루트 인증서(issuer certificate)가 없어서 실패했다는 뜻입니다. 이 문제는 가상 머신이든, 방화벽이든, 시스템 설정이든 몇 가지 원인 중 하나로 발생할 수 있습니다. 주요 원인과 해결 방법은 다음과 같습니다: --- 1. 인증서 체인 미설치 (가장 흔함) Python은 SSL 인증서 검증 시 로컬에 인증기관(CA)의 인증서를 필요로 합니다. 특히 Windows에서는 종종 수동 설치가 필요합니다. 해결: Install Certificates.command 실행 (Mac 전용) Windows에서는 다음 중 하나 수행: (1) certifi 사용하기 (Python에 내장된 CA 번들 사용) import ssl import certifi import urllib.request context = ssl.create_default_context(cafile=certifi.where()) response = urllib.request.urlopen("https://example.com", context=context) print(response.read()) (2) 시스템에 인증서 설치 (루트 CA) Windows에서 루트 인증서를 수동으로 설치하거나, 최신 Python 설치 시 옵션에서 "Install pip and certifi" 등을 체크했는지 확인. --- 2. 인터셉트 프록시 / 방화벽 (기업/보안 환경일 때) 가상 머신이 회사 네트워크나 특정 방화벽 환경 아래 있다면, 트래픽을 가로채서 자체 서명된 인증서를 사용하기도 합니다. 확인 방법: 브라우저에서 같은 URL 접속 시 인증서 경고가 나오는지 확인 네트워크에 프록시가 설정되어 있는지 확인 해결: 해당 기관의 인증서를 수동으로 신뢰 루트에 추가 Python 코드에서 해당 인증서를 cafile로 사용 --- 3. 날짜/시간 설정 오류 SSL 인증서에는 유효 기간이 있으므로 시스템 시간이 틀리면 인증 실패가 발생할 수 있습니다. 확인: 가상 머신의 날짜 및 시간이 정확한지 확인하세요. --- 필요하다면, 문제 환경(예: 사용하는 Python 버전, 어떤 URL 호출 중인지, 가상 머신에 프록시 있는지 등)을 좀 더 알려주세요.