В качестве эксперимента я пытаюсь выполнить запрос GET для https://google.com с указанным файлом CA.
Сертификат Google был получен с помощью следующей команды openssl:
openssl s_client -showcerts -connect google.com:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem
Используя этот сертификат, я делаю запрос GET со следующим кодом:
cafile = "mycertfile.pem"
r = requests.get("https://google.com", verify=cafile)
print(r.status_code)
Почему это не работает и приводит к ошибке проверки сертификата SSL?
Traceback (most recent call last):
File "C:/Users/jarno/Projects/pyplayground/main.py", line 6, in <module>
r = requests.get("https://google.com", verify=cafile)
File "C:\Users\jarno\Projects\flasktest\venv\lib\site-packages\requests\api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "C:\Users\jarno\Projects\flasktest\venv\lib\site-packages\requests\api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\jarno\Projects\flasktest\venv\lib\site-packages\requests\sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\jarno\Projects\flasktest\venv\lib\site-packages\requests\sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "C:\Users\jarno\Projects\flasktest\venv\lib\site-packages\requests\adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='google.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)')))