पायथन 2.7.9 अब SSL प्रमाण पत्र सत्यापन के बारे में अधिक सख्त है। बहुत बढ़िया!पायथन Urllib2 एसएसएल त्रुटि
मुझे आश्चर्य नहीं है कि पहले जो काम कर रहे थे वे अब CERTIFICATE_VERIFY_FAILED त्रुटियां प्राप्त कर रहे हैं। लेकिन मुझे लगता है कि वे काम नहीं कर रहे हैं (प्रमाण पत्र सत्यापन पूरी तरह से अक्षम किए बिना)।
एक प्रोग्राम https पर अमेज़ॅन S3 से कनेक्ट करने के लिए urllib2 का उपयोग कर रहा था।
मैं "verisign.pem" नामक एक फाइल में जड़ CA प्रमाणपत्र डाउनलोड करने और इस प्रयास करें:
import urllib2, ssl
context = ssl.create_default_context()
context.load_verify_locations(cafile = "./verisign.pem")
print context.get_ca_certs()
urllib2.urlopen("https://bucket.s3.amazonaws.com/", context=context)
और मैं अभी भी CERTIFICATE_VERIFY_FAILED हो त्रुटियों, भले ही जड़ सीए लाइन 4 में सही ढंग से छपा है।
openssl इस सर्वर से जुड़ा कनेक्ट कर सकते हैं।
openssl s_client -showcerts -connect bucket.s3.amazonaws.com:443 < /dev/null
मैं श्रृंखला में पिछले प्रमाणपत्र लिया और एक पीईएम फ़ाइल है, जो openssl ठीक पढ़ता में रख: वास्तव में, यहाँ आदेश मैं CA प्रमाणपत्र प्राप्त करने के लिए प्रयोग किया जाता है। यह एक Verisign प्रमाण पत्र है:
Serial number: 35:97:31:87:f3:87:3a:07:32:7e:ce:58:0c:9b:7e:da
Subject key identifier: 7F:D3:65:A7:C2:DD:EC:BB:F0:30:09:F3:43:39:FA:02:AF:33:31:33
SHA1 fingerprint: F4:A8:0A:0C:D1:E6:CF:19:0B:8C:BC:6F:BC:99:17:11:D4:82:C9:D0
कोई भी विचार सत्यापन के साथ काम करने के तरीके को कैसे सक्षम किया जाए?
verisign.pem में कौन सा प्रमाणपत्र है? सुनिश्चित करें कि यह 'ए 1: डीबी: 63: 9 3: 91: 6 एफ: 17: ई 4: 18: 55: 09: 40: 04: 15: सी 7: 02: 40: बी 0: एई: 6 बी के एसएचए 1 फिंगरप्रिंट के साथ प्रमाण पत्र है '(कक्षा 3 सार्वजनिक प्राथमिक प्रमाणन प्राधिकरण) और' 4E: बी 6: डी 5: 78: 49: 9 बी: 1 सी: सीएफ: 5 एफ: 58: 1 ई: एडी: 56: बीई: 3 डी: 9 बी: 67: 44 : ए 5: ई 5' (वेरीसाइन क्लास 3 पब्लिक प्राइमरी सर्टिफिकेशन अथॉरिटी - जी 5) –
मुझे अंत में मिला कि यह एक और यह काम करता है, धन्यवाद! आप कैसे बता सकते हैं कि कौन सा रूट प्रमाणपत्र उपयोग किया जा रहा है? मैं श्रृंखला में प्रत्येक प्रमाण डंप करने के लिए openssl x509 कमांड का उपयोग कर रहा हूं। उनमें से ज्यादातर कहते हैं कि किस प्रमाणपत्र पर हस्ताक्षर किए गए थे, लेकिन मुझे नहीं पता कि आखिरी व्यक्ति कहता है कि किस रूट प्रमाण पर हस्ताक्षर किए गए थे। – abjennings