आप जानते हैं कि साइट पर आप प्राप्त करने के लिए कोशिश कर रहे हैं एक "अच्छा आदमी", तो आप इस तरह अपने "सलामी बल्लेबाज" बनाने की कोशिश कर सकते है:
import httplib2
if __name__ == "__main__":
h = httplib2.Http(".cache", disable_ssl_certificate_validation=True)
resp, content = h.request("https://site/whose/certificate/is/bad/", "GET")
(दिलचस्प हिस्सा
disable_ssl_certificate_validation=True
है)
डॉक्स से: http://bitworking.org/projects/httplib2/doc/html/libhttplib2.html#httplib2.Http
संपादित करें 01:
चूंकि आपका प्रश्न वास्तव में ऐसा क्यों होता है, आप this या this देख सकते हैं।
संपादित करें 02:
देखकर कैसे इस जवाब से अधिक लोगों की तुलना में मैं उम्मीद द्वारा दौरा किया गया है, मैं थोड़ा समझाने के लिए जब अक्षम करने प्रमाण पत्र सत्यापन उपयोगी हो सकता है चाहते हैं।
सबसे पहले, ये प्रमाण पत्र कैसे काम करते हैं, इस बारे में हल्की पृष्ठभूमि की एक छोटी सी पृष्ठभूमि। ऊपर दिए गए लिंक में बहुत सारी जानकारी है, लेकिन यहां यह वैसे भी है।
एसएसएल प्रमाणपत्रों को एक प्रसिद्ध (कम से कम, आपके ब्राउज़र के लिए जाना जाता है) द्वारा सत्यापित किया जाना चाहिए Certificate Authority। आप आम तौर पर उन अधिकारियों में से एक से पूरे प्रमाण पत्र खरीदने के (Symantec, GoDaddy ...)
मोटे तौर पर विचार है: उन प्रमाणपत्र प्राधिकारी (CA) आप एक प्रमाण पत्र भी इसमें शामिल हैं कि सीए जानकारी देना । आपके ब्राउज़र में अच्छी तरह से ज्ञात सीए की एक सूची है, इसलिए जब आपका ब्राउज़र प्रमाण पत्र प्राप्त करता है, तो यह कुछ ऐसा करेगा: "HmmmMMMmmm .... [ब्राउज़र यहां एक शानदार चेहरा बनाता है]... मुझे एक प्राप्त हुआ सर्टिफिकेट, और यह कहता है कि यह सिमेंटेक द्वारा सत्यापित किया गया है। क्या मुझे पता है कि "सिमेंटेक" लड़का? [ब्राउज़र तब प्रसिद्ध सीए की सूची में जाता है और सिमेंटेक के लिए चेक करता है]ओह, हाँ! मैं करता हूँ। ठीक है, प्रमाण पत्र अच्छा है!
आप उस जानकारी अपने आप देख सकते हैं कि आप अपने ब्राउज़र में यूआरएल द्वारा थोड़ा ताला पर क्लिक करें:
हालांकि, वहाँ मामलों में आप सिर्फ HTTPS का परीक्षण करना चाहते हैं, और आप command line टूल का उपयोग करके अपनी खुद की सर्टिफिकेट अथॉरिटी बनाते हैं और आप उस "कस्टम" सीए का उपयोग करते हैं जो "कस्टम" प्रमाण पत्र पर हस्ताक्षर करने के लिए है जिसे आपने अभी भी जेनरेट किया है, है ना? उस स्थिति में, आपका ब्राउज़र (जिस तरह से, प्रश्न में httplib2.Http
) विश्वसनीय सीए की सूची में आपका "कस्टम" सीए नहीं होने वाला है, इसलिए यह कहने जा रहा है कि प्रमाणपत्र अमान्य है। जानकारी अभी भी एन्क्रिप्टेड यात्रा करने जा रही है, लेकिन ब्राउजर आपको क्या कह रहा है कि यह पूरी तरह से भरोसा नहीं करता है कि वह उस स्थान पर एन्क्रिप्टेड यात्रा कर रहा है जहां आप जा रहे हैं।
उदाहरण के लिए, मान लें कि अपने localhost
FQDN के लिए और अपने CA प्रमाणपत्र फ़ाइल वर्तमान निर्देशिका में स्थित है कि कस्टम कुंजी और सीए और सभी मैम्बो जंबो निम्नलिखित this tutorial का एक समूह तैयार करते हैं। आप अपने कस्टम प्रमाणपत्रों और व्हाट्नॉट का उपयोग कर https://localhost:4443
पर चल रहे सर्वर को बहुत अच्छी तरह से चला सकते हैं। अब, आपकी सीए प्रमाणपत्र फ़ाइल वर्तमान निर्देशिका में ./ca.crt
फ़ाइल में स्थित है (उसी निर्देशिका में आपकी पायथन स्क्रिप्ट चल रही है)। आप इस तरह इस्तेमाल कर सकते हैं:
h = httplib2.Http(ca_certs='./ca.crt')
response, body = h.request('https://localhost:4443')
print(response)
print(body)
... और आप चेतावनी अब और नहीं दिखाई देगा। क्यूं कर? क्योंकि आप के बाद से क्रोम (एक ब्राउज़र का हवाला देते हैं करने के लिए) इस सीए के प्रमाणपत्र के बारे में पता नहीं है ./ca.crt
को सीए के प्रमाणपत्र) के लिए देखो जाने के लिए
हालांकि, से कहा, यह वह अमान्य विचार करेंगे:
इसके अलावा, प्रमाणपत्र समाप्त हो जाते हैं। एक मौका है कि आप ऐसी कंपनी में काम कर रहे हैं जो एसएसएल एन्क्रिप्शन के साथ एक आंतरिक साइट का उपयोग करता है। यह एक साल के लिए ठीक काम करता है, और फिर आपका ब्राउज़र शिकायत शुरू करता है। आप उस व्यक्ति के पास जाते हैं जो सुरक्षा के प्रभारी हैं, और पूछें "यो !! मुझे यह चेतावनी यहां मिलती है! क्या हो रहा है?" और उत्तर बहुत अच्छी तरह से हो सकता है "ओह लड़का !! मैं प्रमाण पत्र को नवीनीकृत करना भूल गया! यह ठीक है, इसे अभी तक स्वीकार करें, जब तक कि मैं इसे ठीक नहीं करता।" httplib2 की
प्रणाली प्रमाणपत्र फ़ाइल के लिए पथ पारित कर सकते हैं मैं बहुत यकीन है कि SSL प्रमाणपत्र सत्यापन नहीं हो पाया हूँ **: - डी ** – BorrajaX