अनुरोध पैकेज का उपयोग करते समय SSL InsecurePlatform त्रुटि


237

Im पायथन 2.7.3 और अनुरोधों का उपयोग कर रहा है। मैंने पाइप के माध्यम से अनुरोध स्थापित किया। मेरा मानना ​​है कि यह नवीनतम संस्करण है। मैं डेबियन व्हीज़ी पर चल रहा हूं।

मैंने अतीत में बहुत बार अनुरोधों का उपयोग किया है और कभी भी इस समस्या का सामना नहीं किया है, लेकिन ऐसा लगता है कि जब https अनुरोध करने के साथ Requestsमुझे InsecurePlatformअपवाद मिलता है।

त्रुटि का उल्लेख है urllib3, लेकिन मेरे पास वह स्थापित नहीं है। मैंने इसे जांचने के लिए स्थापित किया था कि क्या यह त्रुटि का समाधान करता है, लेकिन यह नहीं हुआ।

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

किसी भी विचार के रूप में मैं यह क्यों कर रहा हूँ? मैंने डॉक्स की जाँच की है, जैसा कि त्रुटि संदेश में निर्दिष्ट है, लेकिन डॉक्स urllib3 को आयात करने के लिए कह रहे हैं और या तो चेतावनी को अक्षम करते हैं, या एक प्रमाण पत्र प्रदान करते हैं।

जवाबों:


390

कुछ छिपी हुई सुरक्षा सुविधा का उपयोग करें :

pip install requests[security] या pip install pyOpenSSL ndg-httpsclient pyasn1

दोनों कमांड अतिरिक्त पैकेज स्थापित करते हैं:

  • pyOpenSSL
  • क्रिप्टोग्राफी
  • IDNA

कृपया ध्यान दें कि यह अजगर-2.7.9 + के लिए आवश्यक नहीं है ।

यदि pip installत्रुटियों के साथ विफल हो जाता है, तो जांचें कि क्या आपके पास वितरण पैकेज प्रबंधक का उपयोग करके विकास पैकेज आवश्यक हैं libffi, libsslऔर pythonआपके सिस्टम में स्थापित हैं :

  • डेबियन / उबंटू - python-dev libffi-dev libssl-devपैकेज।

  • फेडोरा -openssl-devel python-devel libffi-devel पैकेज।

ऊपर डिस्ट्रो लिस्ट अधूरी है।

वर्कअराउंड ( मूल उत्तर @TomDotTom द्वारा देखें) ) :

यदि आप कुछ आवश्यक विकास पैकेज स्थापित नहीं कर सकते हैं, तो उस चेतावनी को निष्क्रिय करने का विकल्प भी है:

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

यदि आपका pipस्वयं प्रभावित है InsecurePlatformWarningऔर PyPI से कुछ भी स्थापित नहीं कर सकता है, तो मैन्युअल रूप से अतिरिक्त पायथन पैकेजों को तैनात करने के लिए इस चरण-दर-चरण मार्गदर्शिका के साथ तय किया जा सकता है ।


3
मेरे पास अनुरोध है [सुरक्षा], नया टर्मिनल, पायथन २. and.३ और अभी भी यह त्रुटि मिल रही है
जोश नानकिन

45
आपको उबंटू / डेबियन के लिए सिस्टम पर अतिरिक्त लाइब्रेरी स्थापित करने की भी आवश्यकता है:sudo apt-get install python-dev libffi-dev libssl-dev
therealmarv

2
क्या यह ठीक है कि "पाइप" खुद (v6.1 से घूर) उसी सुरक्षा चेतावनी देता है?
jmster

5
अपने शेल के आधार पर, आपको टाइप करना पड़ सकता हैpip install 'requests[security]'
C. रीड

5
zshell में, आपको यह कहने की आवश्यकता है: पाइप स्थापित अनुरोध \ [सुरक्षा \]
अमीर काट्ज

68

अनुरोध 2.6 ने केवल 2.7 SSL पूर्व उपलब्ध मॉड्यूल के साथ अजगर के उपयोगकर्ताओं के लिए यह चेतावनी पेश की।

मान लें कि आप अजगर के एक नए संस्करण में अपग्रेड नहीं कर सकते हैं, तो यह अधिक अप-टू-डेट अजगर एसएसएल स्थापित करेगा:

pip install --upgrade ndg-httpsclient 

फिर भी, यह pyOpenSSL के लिए निर्माण-निर्भरता के बिना कुछ प्रणालियों पर विफल हो सकता है। डेबियन सिस्टम पर, ऊपर दिए गए पिप कमांड से पहले इसे चलाना pyOpenSSL के निर्माण के लिए पर्याप्त होना चाहिए:

apt-get install python-dev libffi-dev libssl-dev

4
मुझे इन पैकेजों को ubuntu 14.04 के लिए 'अजगर-देव लिबफे-देव लिबासल-देव' के रूप में अच्छी तरह से स्थापित करने की आवश्यकता थी।
एंडी

धन्यवाद! मैंने प्रलेखन के लिए एक नोट जोड़ा है: github.com/shazow/urllib3/pull/765
वोल्फगैंग

@ जेसिका FTW! बहुत बहुत धन्यवाद - यह कष्टप्रद था।
नील मैगी

18

मैं उत्पादन में इसका उपयोग नहीं करता, बस कुछ परीक्षण धावकों। और urllib3 प्रलेखन को दोहराना है

यदि आप जानते हैं कि आप क्या कर रहे हैं और इसे और अन्य चेतावनियों को अक्षम करना चाहते हैं

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

संपादित करें / अपडेट करें:

निम्नलिखित को भी काम करना चाहिए:

import logging
import requests

# turn down requests log verbosity
logging.getLogger('requests').setLevel(logging.CRITICAL)

1
इस समाधान के साथ समस्या यह है कि यह केवल वास्तविक समस्या को दबाता है और अनदेखा करता है। इसके अलावा, पैकेज को स्थापित या अपग्रेड करने के लिए पाइप का उपयोग करते समय यह काम नहीं करेगा।
जेसन परम

1
एकमात्र समाधान जो ubuntu 1404 / Python 2.7.6 पर मेरे लिए काम करता है। धन्यवाद
इग्नेसियो वेज़क्वेज़

7

यदि आप अपने अजगर संस्करण को 2.7.9 में अपग्रेड करने में सक्षम नहीं हैं , और चेतावनी को दबाना चाहते हैं,

आप अपने 'अनुरोध' संस्करण को 2.5.3 पर डाउनग्रेड कर सकते हैं :

sudo pip install requests==2.5.3

संस्करण के बारे में: http://fossies.org/diffs/requests/2.5.3_vs_2.6.0/requests/packages/urllib3/util/ssl_.py-diff.html


8
कृपया ध्यान दें कि 2.5.3 में पुनर्निर्देशन के दौरान कुकी हैंडलिंग के साथ सुरक्षा समस्या है।
plaes

2
इस उत्तर को दो बार पोस्ट करने के बजाय, आपको अन्य पोस्ट को डुप्लिकेट के रूप में फ़्लैग करना चाहिए। मैंने अब इसे ऐसे ही बंद कर दिया है।
मार्टिन पीटर्स

6
मैं दूसरी टिप्पणी करता हूं कि ज्ञात भेद्यता के कारण डाउनग्रेड न करें
सेरगोपीरेरा

7

वास्तव में, आप यह कोशिश कर सकते हैं।

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

आप अनुरोधों के लिए कोड पढ़ सकते हैं।

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

2
Be बहुत ऐसा करने सावधान, नहीं की पुष्टि करने के प्रमाणपत्र खतरनाक हो सकता है!
जापज २०'१५ को

बेशक, वेरिफाई नहीं करना खतरनाक होगा। लेकिन कभी-कभी, यह एक अंतिम उपाय है। Ex: easy_install, apt-get, yum या pip ... दौड़े नहीं, या थोड़ा वेब क्रॉलर करें ...
zzzz zzzz

1
मैं एक साझा होस्टिंग वातावरण पर हूं, इसलिए मैं अजगर को 2.7.9 में अपग्रेड नहीं कर सकता हूं और मैं apt-get के साथ libffi.pc स्थापित नहीं कर सकता हूं, जिसे पाइप इंस्टॉल अनुरोधों [सुरक्षा] और अन्य पाइप इंस्टॉल वेरिएंट की आवश्यकता है ऊपर। तो यह जवाब मेरे लिए काम करने वाला था। जब तक आप महत्वपूर्ण कैविएट को समझते हैं कि बिना https वेरिफिकेशन के पेज कंटेंट को बदला / खराब किया जा सकता है, मुझे लगता है कि यह उत्तर ठीक है।
चिरेल

5

यहां दिए गए सभी समाधानों ने मदद नहीं की है (मैं 2.6.6 python के लिए विवश हूं)। मुझे पाइप को पास करने के लिए एक सरल स्विच में उत्तर मिला है:

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

यह पाइप को बताता है कि मॉड्यूल को pypi.python.org से हथियाना ठीक है।

मेरे लिए, यह मुद्दा मेरी कंपनी के प्रॉक्सी के पीछे का फ़ायरवॉल है जो इसे कुछ सर्वरों के लिए एक दुर्भावनापूर्ण क्लाइंट की तरह बनाता है। हुर्रे सुरक्षा।


अद्यतन: PyPi डोमेन में परिवर्तन के लिए @Alex का उत्तर देखें , और अतिरिक्त --trusted-hostविकल्प जो जोड़े जा सकते हैं। (मैं यहां कॉपी / पेस्ट करूंगा, लेकिन उसका जवाब, इसलिए उसे 1)


मैं अंत में इस आदेश का उपयोग कर टेंसरफ़्लो स्थापित कर सकता था, बहुत बहुत धन्यवाद!
पंद्रह

3

यह उत्तर असंबंधित है, लेकिन यदि आप चेतावनी से छुटकारा चाहते हैं और अनुरोधों से निम्नलिखित चेतावनी प्राप्त करना चाहते हैं:

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.

आप अपने अजगर कोड में निम्न पंक्ति जोड़कर इसे निष्क्रिय कर सकते हैं :

requests.packages.urllib3.disable_warnings()


इसके लिए धन्यवाद। अन्य किसी भी उत्तर ने मेरे लिए काम नहीं किया। मुझे लगता है कि इस तरह के एक कष्टप्रद कष्टप्रद संदेश डिफ़ॉल्ट रूप से रखा जाएगा उड़ा रहा हूँ।
दान


1

यह मेरे लिए उबंटू 14.04 (पायथन 2.7.6 के साथ) पर पिछले हफ्ते आया था जब मैंने apt-get dist-upgradeइसमें शामिल libssl1.1:amd64किया था deb.sury.org

चूँकि मैं certbot-auto renewएक क्रॉन जॉब से चलता हूं, इसलिए मैं --no-self-upgradeअनिर्धारित रखरखाव में कटौती करने के लिए भी उपयोग करता हूं । यह परेशानी का स्रोत रहा है।

त्रुटि को ठीक करने के लिए, सब मुझे क्या करना आवश्यक (के साथ रूट बन गया था suके --loginस्विच) और जाने certbot-autoमें ही उन्नयन। अर्थात:

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

इसके बजाय आम तौर पर रूट के क्रॉस्टब से क्या चलता है:

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

उसके बाद, Letencrypt renwals एक बार फिर से सामान्य रूप से चला।


मुझे यहाँ वर्णित वही मुद्दा मिला। चेतावनियाँ: /usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: एक सच्चा SSLContext ऑब्जेक्ट उपलब्ध नहीं है। यह urllib3 को SSL को उचित रूप से कॉन्फ़िगर करने से रोकता है और कुछ SSL कनेक्शन विफल होने का कारण हो सकता है। इसे हल करने के लिए आप पायथन के नए संस्करण में अपग्रेड कर सकते हैं। अधिक जानकारी के लिए, urllib3.readthedocs.io/en/latest/… देखें । InsecurePlatformWarning मैं सिर्फ कमांड टाइप करता हूं: sudo apt-get dist-upgrade त्रुटि को ठीक किया गया।
दिदिरह

0

मेरे लिए कोई काम नहीं मुझे अपग्रेड पाइप की जरूरत है ...।

Debian / Ubuntu

निर्भरता स्थापित करें

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

उन्नयन पाइप और स्थापित संकुल

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

यदि आप निर्भरता को दूर करना चाहते हैं

sudo apt-get remove --purge libpython-dev libssl-dev libffi-dev
sudo apt-get autoremove

0

मैं अभी एक CentOS 5 सर्वर पर एक समान मुद्दा था जहाँ मैंने python2.7 के पुराने संस्करण के शीर्ष पर / usr / स्थानीय में python 2.7.12 स्थापित किया था। CentOS 6 या 7 में अपग्रेड करना अभी इस सर्वर पर कोई विकल्प नहीं है।

अजगर 2.7 मॉड्यूल में से कुछ अभी भी अजगर के पुराने संस्करण से मौजूद थे, लेकिन पाइप अपग्रेड करने में विफल हो रहा था, क्योंकि नए क्रिप्टोग्राफी पैकेज CentOS 5 संकुल द्वारा समर्थित नहीं है।

विशेष रूप से, 'पाइप इंस्टॉल अनुरोध [सुरक्षा]' विफल हो रहा था क्योंकि CentOS 5 पर खुलने का संस्करण 0.9.8e था जो अब क्रिप्टोग्राफी> 1.4.0 द्वारा समर्थित नहीं है।

ओपी मूल मुद्दे को हल करने के लिए मैंने किया:

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

इसने क्रिप्टोग्राफी 1.3.4 स्थापित किया है जो ओपनसेल-0.9.8e के साथ काम करता है। निम्नलिखित आदेश की आवश्यकता को पूरा करने के लिए क्रिप्टोग्रैपी 1.3.4 भी पर्याप्त है।

2) pip install 'requests[security]'

यह कमांड अब इंस्टॉल हो जाता है क्योंकि यह क्रिप्टोग्राफी> 1.4.0 को स्थापित करने का प्रयास नहीं करता है।

ध्यान दें कि Centos 5 पर मुझे भी इसकी आवश्यकता थी:

yum install openssl-devel

क्रिप्टोग्राफी का निर्माण करने की अनुमति देने के लिए


0

नीचे यह बताया गया है कि यह मेरे लिए पायथन 3.6 पर कैसे काम कर रहा है:

import requests
import urllib3

# Suppress InsecureRequestWarning: Unverified HTTPS
urllib3.disable_warnings()


0

यदि आप असुरक्षित चेतावनी को रोकना चाहते हैं जैसे:

/usr/lib/python3/dist-packages/urllib3/connectionpool.py:794: InsecureRequestWarning: असत्यापित HTTPS अनुरोध किया जा रहा है। प्रमाण पत्र सत्यापन को मजबूती से जोड़ने की सलाह दी जाती है। देखें: https://urllib3.readthedocs.org/en/latest/security.html InsecureRequestWightning)

करना:

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

यह सत्यापित = झूठी

कुंजी महत्वपूर्ण है, अनुगमन इस पर अच्छा नहीं है:

requests.packages.urllib3.disable_warnings ()

या

urllib3.disable_warnings ()

लेकिन, आपको पता है, कि संभावित सुरक्षा जोखिम हो सकता है


0

मुझे
मैक
पाइक्म समुदाय संस्करण 2019.3
पायथन इंटरप्रेटर 3.6 के साथ एक ही समस्या थी ।
20.0.2 के साथ अपग्रेडिंग पाइप ने मेरे लिए काम किया।
Pycharm --> Preferences --> Project Interpreter --> click on pip --> specify version 20.0.2 --> Install package

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.