SSL „InsecurePlatform“ klaida, kai naudojama paketų užklausa

Aš naudoju Python 2.7.3 ir užklausas. Aš nustatiau užklausas per pip. Manau, kad tai naujausia versija. Dirbu Debian Wheezy.

Keletą kartų naudojosi užklausomis ir niekada nesu susidūriau su šia problema, bet atrodo, kad kai sukuriu https užklausas su Requests gaunu išimtį „ InsecurePlatform .

Klaida paminėta urllib3 , bet neturiu. Įdiegiau ją ir patikrinome, ar ji išsprendė klaidą, bet ne.

 /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. 

Bet kokios idėjos, kodėl aš jį gaunu? Patikrinau dokumentus, kaip nurodyta klaidos pranešime, tačiau dokumentuose kalbama apie urllib3 importavimą, arba išjunkite įspėjimą arba pateikite sertifikatą.

209
17 марта '15 в 15:43 2015-03-17 15:43 Luke Peckham paklausė kovo 17 d. 15 val. 15:43 2015-03-17 15:43
@ 13 atsakymų

Naudokite paslėptą saugumą :

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

Abi komandos įdiegia šiuos papildomus paketus:

  • pyOpenSSL
  • kriptografija
  • IDNA

Atkreipkite dėmesį, kad tai nereikalinga python-2.7.9 + .

Jei „ pip install nepavyksta atlikti klaidų, patikrinkite, ar jūsų sistemoje įdiegti reikalingi „ libffi , „ libssl ir „ python paketai, naudojant platinimo paketo tvarkyklę :

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

  • „Fedora“ - libffi-devel .

Pirmiau pateiktas adresų sąrašas yra neišsamus.

Sprendimas ( žr. Pradinį atsakymą @TomDotTom ) :

Jei negalite įdiegti kai kurių reikalingų kūrimo paketų, taip pat yra galimybė išjungti šį įspėjimą:

 import requests.packages.urllib3 requests.packages.urllib3.disable_warnings() 
354
17 марта '15 в 15:45 2015-03-17 15:45 atsakymas pateikiamas kovo 17 d., 15 val. 15:45 2015-03-17 15:45

2.6 prašymai pateikė šį įspėjimą „python“ naudotojams iki 2.7.9 versijos, tik turimus SSL modulius.

Darant prielaidą, kad negalite naujovinti į naujesnę „Python“ versiją, bus įdiegtos modernesnės „Python“ SSL bibliotekos:

 pip install --upgrade ndg-httpsclient 

Tačiau kai kuriose sistemose tai gali nepavykti, nes nesukuriamos priklausomybės nuo pyOpenSSL. „Debian“ sistemose, prieš tai atlikus „pip“ komandą, pakanka, kad sukurtumėte „pyOpenSSL“:

 apt-get install python-dev libffi-dev libssl-dev 
66
08 апр. Atsakymą pateikė Jessica Gadling. 2015-04-08 00:44 '15 - 0:44 2015-04-08 00:44

Aš nenaudoju jo gamyboje, tik kai kurie bandomieji vaizdo įrašai. Ir pakartokite dokumentaciją urllib3

Jei žinote, ką darote, ir norėtumėte išjungti šį ir kitus įspėjimus

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

Pakeisti / atnaujinti:

Taip pat turėtų veikti:

 import logging import requests # turn down requests log verbosity logging.getLogger('requests').setLevel(logging.CRITICAL) 
13
11 авг. Atsakymas suteikiamas TomDotTom 11 rug . 2015-08-11 18:36 '15, 18:36, 2015-08-11 18:36

Jei negalite atnaujinti „Python“ versijos į 2.7.9 versiją ir norite panaikinti įspėjimus,

Galite pakoreguoti užklausas į 2.5.3 versiją:

 sudo pip install requests==2.5.3 

Apie versiją: http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html

8
20 марта '15 в 0:02 2015-03-20 00:02 atsakymas, kurį pateikė „ Raides“ kovo 20 d., 15 val. 0:02 2015-03-20 00:02

Jūs iš tikrųjų galite tai išbandyti.

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

Galite perskaityti užklausų kodą.

"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
15 мая '15 в 10:07 2015-05-15 10:07 atsakymas 张志鹏 gegužės 15 d., 15 val. 10:07 2015-05-15 10:07

Visi čia pateikti sprendimai nepadėjo (esu tik 2.6.6 pythonas). Radau atsakymą paprastu jungikliu, kad galėčiau eiti į pip:

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

Tai nurodo „pip OK“ užfiksuoti modulį iš pypi.python.org.

Man problema kyla dėl mano kompanijos proxy serverio už ugniasienės, todėl kai kuriems serveriams jis atrodo kaip kenkėjiškas klientas. Apsaugos susižavėjimas.

5
07 нояб. Atsakymas pateikiamas PfunnyGuy 07.11 . 2016-11-07 22:31 '16 at 22:31 pm 2016-11-07 22:31

Šis atsakymas nesusijęs, bet jei norite atsikratyti įspėjimo ir gausite tokį įspėjimą iš užklausų:

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.

Galite išjungti , pridedant šią eilutę prie „python“ kodo:

requests.packages.urllib3.disable_warnings()

2
20 нояб. atsakymas pateikiamas saulėgrgta 20 lapkričio. 2015-11-20 13:32 '15, 13:32 2015-11-20 13:32

Pirmiausia turėjau pereiti prie „ bash (iš ZSH). Tada

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

fiksuota problema.

1
26 янв. Martin Thoma atsakymas, pateiktas sausio 26 d 2017-01-26 16:55 '17 ne 4:55 2017-01-26 16:55

Man nėra jokio darbo, man reikia atnaujinimo.

Debian / Ubuntu

įdiegti priklausomybes

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

Atnaujinkite paketą ir įdiekite paketus

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

Jei norite pašalinti priklausomybes

 sudo apt-get remove --purge libpython-dev libssl-dev libffi-dev sudo apt-get autoremove 
0
12 окт. Atsakymą pateikė Thedemon007 spalis 12. 2016-10-12 20:41 '16 at 8:41 pm 2016-10-12 20:41

Žemiau yra pavyzdys, kaip jis veikia „Python 3.6“:

 import requests import urllib3 # Suppress InsecureRequestWarning: Unverified HTTPS urllib3.disable_warnings() 
0
07 июля '17 в 21:27 2017-07-07 21:27 atsakymą įteikė Luiz Vaz liepos 17 d. 17 d. 21:27 2017-07-07 21:27

Aš turėjau panašią problemą „CentOS 5“ serveryje, kur įdiegiau python 2.7.12 į / usr / local ant senesnės versijos python2.7. Šiuo metu serverio atnaujinimas į „CentOS 6“ arba „7“ nėra parinktis.

Kai kurie python 2.7 moduliai vis dar egzistavo iš senosios „python“ versijos, tačiau „pip“ negali būti atnaujintas, nes naujas kriptografijos paketas nepalaikomas „CentOS 5“ paketais.

Konkrečiai, „pip įdiegimo užklausos [saugumas]“ neveikė, nes „Cents 5“ versija „opensl“ buvo 0.9.8e, o kriptografija nebėra palaikoma> 1.4.0.

Norėdami išspręsti pradinę OP problemą, aš:

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

Ši įdiegta kriptografija 1.3.4, kuri veikia su openssl-0.9.8e. kriptografija 1.3.4 taip pat yra pakankama, kad įvykdytų reikalavimą kitai komandai.

 2) pip install 'requests[security]' 

Dabar ši komanda įdiegta, nes ji nesiekia nustatyti kriptografijos> 1.4.0.

Atminkite, kad „Centos 5“ taip pat turiu:

 yum install openssl-devel 

Leisti sukurti kriptografiją

0
28 окт. Atsakyti DavidG Oct 28. 2016-10-28 19:01 '16 at 7:01 pm 2016-10-28 19:01

Tai pasirodė man Ubuntu 14.04 (iš Python 2.7.6) praėjusią savaitę po to, kai padariau apt-get dist-upgrade , kuris apėmė libssl1.1:amd64deb.sury.org .

Kadangi paleidžiu „ certbot-auto renew iš „cron“ užduoties, taip pat naudoju „ --no-self-upgrade kad sumažintumėte neplanuotą techninę priežiūrą. Atrodo, kad tai yra problemų šaltinis.

Norėdami ištaisyti klaidą, viskas, ką turėjau padaryti, tapo šaknimi (naudojant su --login jungiklį) ir leiskite certbot-auto . Ty:

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

vietoj to, kas paprastai atliekama kaip root crontab:

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

Po to vėl įsijungia reikazgimai.

0
25 сент. Atsakymą pateikė Dale Anderson 25 sep. 2017-09-25 20:36 '17, 8:36 pm 2017-09-25 20:36

Nenaudokite „pyOpenSSL“, nes netrukus jis bus pasenęs. Geriausias būdas yra

 import requests requests.packages.urllib3.disable_warnings() 
0
31 авг. Atsakymas, kurį pateikė Mohammad Shahid Siddiqui rugpjūčio 31 d 2017-08-31 21:23 '17 prie 21:23 2017-08-31 21:23

Kiti klausimai apie žymes arba Ask a Question