इंसेक्टुरैस रेयरेस्टवेअरिंग को दबाएं: Python2.6 में Unverified HTTPS अनुरोध किया जा रहा है


345

मैं pyVmomi के उपयोग के साथ और कनेक्शन विधियों में से एक का उपयोग करते हुए Python2.6 में स्क्रिप्ट लिख रहा हूं :

service_instance = connect.SmartConnect(host=args.ip,
                                        user=args.user,
                                        pwd=args.password)

मुझे निम्नलिखित चेतावनी मिली है:

/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html
  InsecureRequestWarning)

क्या दिलचस्प है कि मेरे पास पाइप के साथ urllib3 स्थापित नहीं है (लेकिन यह /usr/lib/python2.6/site-packages/requests/packages/urllib3/ में है )।

मैंने यहाँ सुझाए अनुसार प्रयास किया है

import urllib3
...
urllib3.disable_warnings()

लेकिन इससे कुछ भी नहीं बदला।


आप उस विशिष्ट मॉड्यूल के लिए लॉग स्तर सेट करने का प्रयास कर सकते हैं जैसा कि इस उत्तर में वर्णित है stackoverflow.com/questions/7234262/…
रीना अबोलोफ़िया

एक वैश्विक और पूरी तरह से काम करने वाला समाधान है: stackoverflow.com/questions/14463277/…
jmcollin92

2
चेतावनी: यदि आप दूरस्थ सर्वर को लागू करने वाले किसी व्यक्ति की परवाह नहीं करते हैं तो
ivan_pozdeev

4
खैर, चेतावनी वास्तव में जो कुछ भी हो रहा है उसे रोकती नहीं है। यह सत्यापन को अक्षम नहीं कर रहा है, यह सत्यापन की कमी के बारे में चेतावनी को अक्षम कर रहा है।
dwanderson

जवाबों:


795

आप PYTHONWARNINGSपर्यावरण चर के माध्यम से किसी भी पायथन चेतावनी को निष्क्रिय कर सकते हैं । इस मामले में, आप चाहते हैं:

export PYTHONWARNINGS="ignore:Unverified HTTPS request"

पायथन कोड का उपयोग करने को अक्षम करने के लिए ( requests >= 2.16.0):

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

के लिए requests < 2.16.0, नीचे मूल उत्तर देखें।

मूल उत्तर

आपके urllib3.disable_warnings()लिए काम नहीं करने का कारण यह है कि ऐसा लगता है कि आप अनुरोधों के अंदर urllib3 के अलग उदाहरण का उपयोग कर रहे हैं।

मैं इसे यहाँ पथ पर आधारित इकट्ठा करता हूँ: /usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py

अनुरोधों के अनुसार urllib3 में चेतावनी को अक्षम करने के लिए, आपको मॉड्यूल के उस विशिष्ट उदाहरण को आयात करना होगा:

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

मैं उस विकास के बारे में ब्लॉग करता हूँ जो मैं pyvmomi पर करता हूं और इस मुद्दे को अक्टूबर 2014 में वापस कवर किया। Im सिर्फ इस लिंक को साझा करने से दूसरों को भविष्य में उपयोगी pyvmomi जानकारी ढूंढने में मदद मिलेगी: irr-online.com/index.php/tag/pyvmomi
माइकल राइस

37
PYTHONWARNINGS="ignore:Unverified HTTPS request"
राहुल पाटिल

2
पूर्णता के लिए:from requests.packages.urllib3.exceptions import InsecureRequestWarning
propjk007

2
यह उत्तर पुराना है। एक आधुनिक संस्करण के लिए, नयना अडासुरिया का उत्तर देखें।
दक्खन

3
नयना Adassuriya के जवाब से नकल: import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
शमूएल

117

यह 2017 में जवाब है। अब urllib3और हिस्सा requestsनहीं है

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

7
वर्ष आपके द्वारा उपयोग किए जा रहे अजगर की संशोधन संख्या से कम आयात है।
कोडमोंकी

3
हाँ, वर्ष से अधिक महत्वपूर्ण संशोधन। इसके लिए हैrequests >= 2.16.0
dwanderson

कर सकते हैं किसी को urllib3 के संस्करण पोस्ट, जब मैं यह कोशिश है, यह कहना है urllib3 कोई विशेषता 'disable_warnings' है
steff_bdh

1
मैं इस प्रतिक्रिया से भ्रमित हूं। मेरे requestsसंस्करण है 2.21.0और यह है urllib3। मैंने कोशिश की 2.16.0, `2.16.1 , and 2.17.0` और वे सभी थे urllib3। मैंने कोशिश की 2.4.0और उस एक के पास नहीं था, हालांकि। क्या उन्होंने इसे वापस जोड़ा?
माइक फर्लेंडर

35

प्रति इस GitHub टिप्पणी, एक निष्क्रिय कर सकते हैं urllib3के माध्यम से अनुरोध चेतावनी requestsएक 1-लाइनर में:

requests.packages.urllib3.disable_warnings()

यह सभी चेतावनियों को दबा देगा , न कि सिर्फ InsecureRequest(यानी यह भी दबाएगा InsecurePlatformआदि)। ऐसे मामलों में जहां हम काम करने के लिए सामान चाहते हैं, मैं संक्षिप्तता को आसान बनाता हूं।


4
यह 2.7 के लिए सबसे अच्छा विकल्प है क्योंकि मुझे केवल चेतावनी को दबाने के लिए urllib3 आयात करने की आवश्यकता नहीं है
कोडमॉन्की

3
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)काम करने लगता है।
मत्तलक्षेंद्र

29

सही तरीका यह है कि दिए गए लिंक पर संबंधित अनुभाग को पढ़ें और जैसा कहें वैसा करें। सीए प्रमाणपत्रों के अनुसार विशिष्ट तरीका requests(जो अपनी स्वयं की प्रति के साथ बंडल करता है urllib3) - उन्नत उपयोग - अनुरोध 2.8.1 प्रलेखन :

  • requests अपने स्वयं के प्रमाणपत्र बंडल के साथ जहाज (लेकिन यह केवल मॉड्यूल के साथ एक साथ अपडेट किया जा सकता है)
  • यदि यह स्थापित है, तो यह पैकेज के बजाय (तब से requests v2.4.0) काcertifi उपयोग करेगा

HTTPS प्रमाणपत्र सत्यापन सुरक्षा उपाय को हल्के ढंग से खारिज करने के लिए कुछ नहीं है। मैन-इन-द-मिडल अटैक कि यह आपको किसी तीसरे पक्ष से सुरक्षा प्रदान करने से रोकता है, जैसे कि आपके डेटा में छेड़छाड़ या चोरी करने वाला वायरस

जो, आज के सरकार समर्थित वैश्विक हैकिंग ऑपरेशनों जैसे कि टेलिकॉम एक्सेस ऑपरेशंस और चीन के ग्रेट फ़ायरवॉल के साथ जो नेटवर्क इन्फ्रास्ट्रक्चर को लक्षित करते हैं, आपके विचार से अधिक संभावित है।


मेरे पास 2.8.1 और सर्टिफिकेट 2015.11.20.1 है और मुझे अभी भी चेतावनी मिलती है।
एलेक्स बार्टिस

3
@ AlexBartiş यह हो सकता है यदि आप (या कुछ कोड जिसे आप कहते हैं) पास हो verify=False
ivan_pozdeev

2
इस उत्तर के लिए इतने कम वोट क्यों हैं? क्या वास्तव में इन चेतावनियों को नजरअंदाज करना सुरक्षित है?
sgryzko

1
@sgryzko केवल तभी यदि आप किसी को दूरस्थ सर्वर को लागू करने के बारे में परवाह नहीं करते हैं। शायद, बहुत से वास्तव में परवाह नहीं करते हैं और / या पहले उत्तर से परे नहीं पढ़ते हैं, सकारात्मक प्रतिक्रिया चक्र में योगदान करते हैं। यह उत्तर भी लगभग एक साल बाद पोस्ट किया गया था।
ivan_pozdeev

2
हां, आपको उत्पादन के माहौल में सही काम करना चाहिए, और गलती को दबाने के लिए बुरा है। लेकिन यह पूरी तरह से मान्य बात है कि वे परीक्षण के माहौल में इन त्रुटियों को दबाना चाहते हैं।
व्रू

12

अधीर के लिए, अजगर को निष्क्रिय HTTPS चेतावनी को अक्षम करने का एक त्वरित तरीका:

export PYTHONWARNINGS="ignore:Unverified HTTPS request"

शक्तियों के लिए कमांड है$env:PYTHONWARNINGS="ignore:Unverified HTTPS request"
Gwen Au

10

स्वीकृत उत्तर काम नहीं करता है अगर कुछ पैकेज विक्रेताओं के पास urlib3 की खुद की प्रति है, तो इस मामले में यह अभी भी काम करेगा:

import warnings

warnings.filterwarnings('ignore', message='Unverified HTTPS request')

1

मेरे पास PyVmomi Client के साथ एक समान समस्या थी। पायथन संस्करण 2.7.9 के साथ, मैंने इस समस्या को कोड की निम्न पंक्ति के साथ हल किया है:

default_sslContext = ssl._create_unverified_context()
self.client = \
                Client(<vcenterip>, username=<username>, password=<passwd>,
                       sslContext=default_sslContext )

ध्यान दें कि, काम करने के लिए, आपको पायथन 2.7.9 कम से कम चाहिए।


1

क्यों नहीं pyvmomi मूल फ़ंक्शन का उपयोग कर रहा हैSmartConnectNoSSL । उन्होंने इस फ़ंक्शन को जोड़ाJune 14, 2016 और नाम दिया ConnectNoSSL, एक दिन बाद जब उन्होंने नाम बदल दिया SmartConnectNoSSL, तो अपने प्रोजेक्ट में कोड की अनावश्यक लाइनों के साथ चेतावनी पारित करने के बजाय इसका उपयोग करें?

एसएसएल सत्यापन के बिना एक निर्दिष्ट सर्वर से कनेक्ट करने के लिए एक मानक विधि प्रदान करता है। स्वयं-हस्ताक्षरित प्रमाण पत्र के साथ सर्वर से कनेक्ट करते समय या जब आप एसएसएल को पूरी तरह से अनदेखा करना चाहते हैं तो उपयोगी

service_instance = connect.SmartConnectNoSSL(host=args.ip,
                                             user=args.user,
                                             pwd=args.password)

0

के लिए अजगर 2.7

परिवेश चर PYTHONWARNINGS को कुंजी के रूप में जोड़ें और इसी मान को अनदेखा करें:

os.environ['PYTHONWARNINGS']="ignore:Unverified HTTPS request"

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