Wpis z mikrobloga

Mircy, jak sobie radzicie z błędem SSL przy otwieraniu stron na https:

[SSL: CERTIFICATEVERIFYFAILED] certificate verify failed (ssl.c:598)
Exception Location: /usr/lib64/python3.4/ssl.py in do
handshake, line 805

To jest kod powodujący ten błąd:

import requests
a = requests.get('[https://api-v3.mojepanstwo.pl/dane/sejm_druki?_type=objects&page=1',](https://api-v3.mojepanstwo.pl/dane/sejm_druki?_type=objects&page=1',) verify=False)

Teoretycznie ten wątek:
http://stackoverflow.com/questions/10667960/python-requests-throwing-up-sslerror
powinien wyjaśnić sprawę ale nie rozumiem jak mam zdobyć plik pem ze strony api-v3.mojepanstwo.pl

Gdybym rozumiał to mógłbym zrobić tak:

verify = '/etc/ssl/certs/jakis_certyfikat.pem'
a = requests.get('[https://api-v3.mojepanstwo.pl/dane/sejm_druki?_type=objects&page=1',](https://api-v3.mojepanstwo.pl/dane/sejm_druki?_type=objects&page=1',) verify=verify)

#django
  • 2
  • Odpowiedz
@soma115: ten kod z verify=False działa, tylko wyskakuje warning, no i wtedy nie masz tej weryfikacji SSL.

jak chcesz ten plik pem to wejdź na
https://cservices.certum.pl/muc-customer/certificate/list

podaj mail: biuro@epf.org.pl i wyszukaj, wybierz ten pierwszy, bo jest ważny i kliknij Zapisz tekstowo wtedy pobierzesz pem

ale jak podasz verify='sciagnietycertyfikat.pem' to mi nie działa, według dokumentacji: "Option verify only applies to host certs." Chyba można jeszcze przez cert=('client.cert', 'client.key') , ale wtedy trzeba
  • Odpowiedz
@FiKsUmDyRdUm: Wielkie dzięki za pomoc. Dopiero teraz zasiadłem nad tym tematem i wygląda na to, że True pomogło - czyli idealnie. Aczkolwiek wcześniej aktualizowałem certyfikaty główne - chyba to też odegrało rolę,
Nie mniej jednak notuję twoją odpowiedź bo jest bardzo pomocna a temat na pewno wróci u innych osób.

(pracuje nad bardzo fajnym projektem:
https://docs.google.com/document/d/1cEGtCH4GAhDpa-YWOx9xigLP7nnd5PT1Cg4j7kiCilU/edit
)
  • Odpowiedz