Błąd SSL InsecurePlatform podczas korzystania z pakietu żądań

Używam Pythona 2.7.3 i zapytań. Zainstalowałem żądania przez pip. Myślę, że to najnowsza wersja. Działam na Debianie Wheezy.

Używałem żądań wiele razy w przeszłości i nigdy nie spotkałem się z tym problemem, ale wydaje się, że podczas tworzenia żądań https z Requests dostaję wyjątek InsecurePlatform.

Błąd wspomina urllib3, ale nie mam tego zainstalowanego. Zainstalowałem go, aby sprawdzić, czy rozwiązał błąd, ale nie.

/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3
/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not
available. This prevents urllib3 from configuring SSL appropriately and 
may cause certain SSL connections to fail. For more information, see 
https://urllib3.readthedocs.org/en/latest  
/security.html#insecureplatformwarning.
Jakieś pomysły, dlaczego to dostaję? Sprawdziłem dokumenty, jak określono w komunikacie o błędzie, ale dokumenty mówią, aby zaimportować urllib3 i albo wyłączyć ostrzeżenie, albo dostarczyć certyfikat.
Author: plaes, 2015-03-17

14 answers

Użyj nieco ukrytej funkcji bezpieczeństwa:

pip install 'requests[security]' lub pip install pyOpenSSL ndg-httpsclient pyasn1

Oba polecenia instalują następujące dodatkowe pakiety:

  • pyOpenSSL
  • kryptografia
  • idna

Należy pamiętać, że nie jest to wymagane dla python-2.7.9 + .

Jeśli pip install nie wystąpią błędy, sprawdź, czy masz wymagane pakiety deweloperskie dla libffi, libssl i python zainstalowany w Twoim systemie przy użyciu pakietu dystrybucji manager :

  • Debian/Ubuntu - python-dev libffi-dev libssl-dev paczki.

  • Fedora - openssl-devel python-devel libffi-devel paczki.

Powyższa lista dystrybucji jest niekompletna.

Obejście (zobacz oryginalną odpowiedź użytkownika TomDotTom):

W przypadku, gdy nie można zainstalować niektórych wymaganych pakietów deweloperskich, istnieje również opcja wyłączenia tego Ostrzeżenie:

import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()
 378
Author: plaes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:00

Requests 2.6 wprowadziło to Ostrzeżenie dla Użytkowników Pythona przed 2.7.9 z dostępnymi tylko zapasowymi modułami SSL.

Zakładając, że nie możesz uaktualnić Pythona do nowszej wersji, zainstaluje to bardziej aktualne biblioteki SSL Pythona:

pip install --upgrade ndg-httpsclient 

Jednak może się to nie udać w niektórych systemach bez zależności kompilacji dla pyOpenSSL. W systemach Debiana, uruchomienie tego przed powyższym poleceniem pip powinno wystarczyć do zbudowania pyOpenSSL:

apt-get install python-dev libffi-dev libssl-dev
 67
Author: Jessica Gadling,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-07 21:44:18

Nie używam tego w produkcji, tylko testowych biegaczy. I powtórzyć dokumentację urllib3

Jeśli wiesz co robisz i chciałbyś wyłączyć to i inne ostrzeżenia

import requests.packages.urllib3
requests.packages.urllib3.disable_warnings()

Edycja / Aktualizacja:

Powinno działać również:

import logging
import requests

# turn down requests log verbosity
logging.getLogger('requests').setLevel(logging.CRITICAL)
 17
Author: TomDotTom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-29 12:35:51

Jeśli nie możesz uaktualnić swojej wersji Pythona do wersji 2.7.9 i chcesz wyłączyć ostrzeżenia,

Możesz obniżyć wersję "requests" do wersji 2.5.3:

sudo pip install requests==2.5.3

O wersji: http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html

 7
Author: raittes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-20 21:01:34

Możesz spróbować tego.

requests.post("https://www.google.com", verify=False)

Możesz odczytać kod dla żądań.

"C:\Python27\Lib\site-packages\requests\sessions.py"

class Session(SessionRedirectMixin):
......
 def request(self, method, url,
    params=None,
    data=None,
    headers=None,
    cookies=None,
    files=None,
    auth=None,
    timeout=None,
    allow_redirects=True,
    proxies=None,
    hooks=None,
    stream=None,
    verify=None,  # <========
    cert=None):
    """
    ...
    :param verify: (optional) if True, the SSL cert will be verified.
         A CA_BUNDLE path can also be provided.
    ...
    """
 7
Author: zhipeng zhang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-11 21:20:20

Wszystkie podane tutaj rozwiązania nie pomogły(ograniczam się do Pythona 2.6.6). Znalazłem odpowiedź w prostym przełączniku, aby przejść do pip:

$ sudo pip install --trusted-host pypi.python.org <module_name>

To mówi pip, że można pobrać moduł z pypi.python.org.

Dla mnie problemem jest proxy mojej firmy za firewallem, który sprawia, że wygląda na złośliwego klienta dla niektórych serwerów. Hura Ochrona.

 5
Author: PfunnyGuy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-07 19:31:08

Ta odpowiedź jest niezwiązana, ale jeśli chcesz pozbyć się ostrzeżenia i uzyskać następujące ostrzeżenie od żądań:

InsecurePlatformWarning /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:79: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. For more information, see https://urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarning.

Możesz wyłączyć dodając następującą linię do kodu Pythona:

requests.packages.urllib3.disable_warnings()

 3
Author: daemonsl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-20 10:32:58

Najpierw musiałem iść do ZSH. Then

sudo -H pip install 'requests[security]' --upgrade

Naprawiono problem.

 1
Author: Martin Thoma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-26 13:55:17

Dla mnie żadnej pracy nie potrzebuję upgrade pip....

Debian / Ubuntu

Install dependencies

sudo apt-get install libpython-dev libssl-dev libffi-dev

Upgrade PIP and install packages

sudo pip install -U pip
sudo pip install -U pyopenssl ndg-httpsclient pyasn1

Jeśli chcesz usunąć zależności

sudo apt-get remove --purge libpython-dev libssl-dev libffi-dev
sudo apt-get autoremove
 0
Author: Thedemon007,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-12 17:41:58

Właśnie miałem podobny problem na serwerze CentOS 5, gdzie zainstalowałem Pythona 2.7.12 w /usr / local na znacznie starszej wersji python2. 7. Aktualizacja do CentOS 6 lub 7 nie jest obecnie dostępna na tym serwerze.

Niektóre moduły Pythona 2.7 nadal istniały ze starszej wersji Pythona, ale pip nie dokonał aktualizacji, ponieważ nowszy pakiet kryptograficzny nie jest obsługiwany przez Pakiety CentOS 5.

W szczególności, 'pip install requests [security]' nie powiodło się ponieważ wersja openssl na CentOS 5 była 0.9.8 e, która nie jest już obsługiwana przez cryptography > 1.4.0.

Aby rozwiązać oryginalny problem OPs zrobiłem:

1) pip install 'cryptography<1.3.5,>1.3.0'.  

To zainstalowane cryptography 1.3.4, które współpracuje z openssl-0.9.8 e. cryptograpy 1.3.4 jest również wystarczające, aby spełnić wymagania dla następującego polecenia.

2) pip install 'requests[security]'

To polecenie instaluje się teraz, ponieważ nie próbuje zainstalować cryptography > 1.4.0.

Zauważ, że na Centos 5 też potrzebowałem do:

yum install openssl-devel

Aby umożliwić budowę kryptografii

 0
Author: DavidG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-28 16:01:15

Poniżej jak to działa u mnie na Pythonie 3.6:

import requests
import urllib3

# Suppress InsecureRequestWarning: Unverified HTTPS
urllib3.disable_warnings()
 0
Author: Luiz Vaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-07 18:27:53

Dont install pyOpenSSL as it shall be deprecated. Obecnie najlepszym podejściem jest -

import requests
requests.packages.urllib3.disable_warnings()
 0
Author: Mohammad Shahid Siddiqui,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-31 18:23:31

To pojawiło się dla mnie na Ubuntu 14.04 (z Pythonem 2.7.6) w zeszłym tygodniu po tym, jak zrobiłem apt-get dist-upgrade, który zawierał libssl1.1:amd64 z deb.sury.org.

Ponieważ uruchamiam certbot-auto renew z Zadania cron, używam również --no-self-upgrade, aby ograniczyć nieplanowaną konserwację. To wydaje się być źródłem kłopotów.

Aby naprawić błąd, wszystko, co musiałem zrobić, to zostać rootem (z su'S --login switch) i pozwolić certbot-auto uaktualnić się. I. E:

sudo su --login
/usr/local/bin/certbot-auto renew 
# ... Upgrading certbot-auto 0.8.1 to 0.18.2... blah blah blah ...

Zamiast tego, co normalnie działa z crontab roota:

5 7 * * * /usr/local/bin/certbot-auto renew --quiet --no-self-upgrade

Po tym, letsencrypt renwals ponownie działał normalnie.

 0
Author: Dale Anderson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-25 17:44:12

Jeśli chcesz zatrzymać ostrzeżenie typu:

/usr/lib / python3/dist-packages / urllib3/connectionpool. py: 794: InsecureRequestWarning: wysyłane jest niezweryfikowane żądanie HTTPS. Dodawanie zaleca się weryfikację certyfikatu. Zobacz też: https://urllib3.readthedocs.org/en/latest/security.html InsecureRequestWarning)

Do:

requests.METHOD("https://www.google.com", verify=False)

Verify = False

Jest kluczem, następstwa nie są w tym Dobre:

Prośby.paczki.urllib3disable_warnings ()

Lub

Urllib3.disable_warnings ()

Ale musisz wiedzieć, że to może spowodować potencjalne zagrożenie bezpieczeństwa.
 0
Author: J.Z,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-21 07:06:17