Как выполнить запрос get через ssl с указанным файлом ca - PullRequest
0 голосов
/ 18 апреля 2020

В качестве эксперимента я пытаюсь выполнить запрос 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)')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...