2013-09-04 20 views
8

मैंने एक दस्तावेज़ पढ़ा है जो कहता है कि पायथन 2 में केवल ssl.PROTOCOL_TLSv1 स्थिर है, और ssl.PROTOCOL_TLSv1_1 और ssl.PROTOCOL_TLSv1_2 पायथन 3.4 में जोड़े गए थे। तो मैं पायथन 2 में टीएलएस 1.1 और 1.2 का उपयोग कैसे कर सकता हूं?क्या मैं अजगर 2 में टीएलएस संस्करण 1.1 या 1.2 का उपयोग कर सकता हूं?

पीएस। मैं टीएलएस 1.0 का उपयोग नहीं करना चाहता क्योंकि इसमें कुछ सुरक्षा त्रुटियां हैं। टीएलएस 1.2 अब नवीनतम संस्करण है, इसलिए मैं अपना प्रोग्राम केवल टीएलएस 1.2 का उपयोग करना चाहता हूं; अगर सर्वर टीएलएस 1.2 का समर्थन नहीं करता है तो कनेक्शन को विफल कर दें।

उत्तर

1

कोई वहाँ अजगर 2 में TLS 1.1 या 1.2 के लिए योजना बनाई कोई समर्थन नहीं है, देखें:

http://bugs.python.org/issue16692

यह स्पष्ट रूप से कहा गया है कि टीएलएस> 1.0 अजगर 2.7 में बैकपोर्ट नहीं किया जाएगा, और अजगर देखरेख कहा कई बार पाइथन 2.8 होने वाला नहीं है।

कृपया ध्यान दें कि कुछ सर्वर अब के लिए टीएलएस 1.2 का समर्थन करते हैं। उम्मीद है कि यह भविष्य में बदल जाएगा।

+0

क्या आप पाइथन 2.7 को बैकपोर्ट टीएलएस> 1.0 बैकपोर्ट नहीं के पाइथन रखरखाव के कथन के बारे में एक लिंक दे सकते हैं? धन्यवाद – Tian

+0

क्या आपने मेरा पिछला लिंक पढ़ा था? :) यह वहीं है: http://bugs.python.org/issue16692#msg189879 –

+3

यह कहा जा सकता है, लेकिन सच है कि टीएलएस 1.1 और पाइथन के लिए 1.2 समर्थन> 2.7.8 है। "संस्करण 2.7 में नया देखें।9 "एसएसएल दस्तावेज पर ध्यान दें: https://docs.python.org/2/library/ssl.html#ssl.PROTOCOL_TLSv1_2 – guival

11

पुराने प्रश्न को पुनर्जीवित करने के लिए मेरी माफ़ी के साथ, ऐसा लगता है कि TLS1.1 and TLS1.2 के लिए समर्थन पाइथन 2.7.9 के लिए लाया जाएगा, जो December 2014 के आसपास रिलीज के लिए निर्धारित है।

2

मुझे हाल ही में पारस्परिक रूप से प्रमाणीकृत एसएसएल के साथ एक टीएलएसवी 1.2 कनेक्शन समाप्त करना पड़ा और यह वेनिला 2.7.8 पर नहीं था। मैं अपने नेटवर्क i/o गहन अनुप्रयोग को पाइथन 3 पर दर्दनाक रूप से पोर्ट करना शुरू कर रहा था, प्रत्येक स्ट्रिंग को बाइट्स में बदल रहा था और वापस आरईवी/भेज के लिए बदल रहा था। यह चूसने जा रहा था।

फिर मुझे पीईपी 466 मिला। आप टीएलएस 1.1 और टीएलएस 1.2 काम करने के लिए पीईपी 466 (Google इसे) से पैच को 2.7.7 या 2.7.8 तक आसानी से लागू कर सकते हैं।

पीईपी 466 के लिए पैच @http://bugs.python.org/file36423/ssl-backport.diff

इसके अलावा, आप निम्नलिखित पैच यूनिकोड संबंधित बग जब एसएसएल कोड में त्रुटियों के निर्माण कि एक segfault का कारण बनता है ठीक करने के लिए आवश्यकता होगी:

इस पैच है @http://bugs.python.org/file36017/unicode_fromformat.patch

इसके अलावा, एक बार आप पैच लागू, आप तकनीकी रूप से निम्नलिखित विन्यस्त और संकलन से पहले करना चाहिए:

~/Python-2.7.8$ python3 ./Tools/ssl/make_ssl_data.py /usr/include/openssl/ _ssl_data.h 
~/Python-2.7.8$ mv _ssl_data.h Modules/_ssl_data.h 

फिर आप & & & & इंस्टॉल कर सकते हैं और w/TLSv1.1 और TLSv1.2 जाने के लिए अच्छा होना चाहिए।

~/Python-2.7.8$ ./configure --enable-unicode=ucs2 --prefix=/opt/Python-2.7.8/ --with-pth && make -j && sudo make install 

TLS 1.2 अब मेरे लिए ठीक काम कर रहा है, तो मैं 3.

वैसे भी अजगर को एक विशाल एप्लिकेशन पोर्ट की जरूरत नहीं है, पीईपी पृष्ठ पर शब्दों भ्रामक है, यह ध्वनि बनाता है दिसंबर में 2.7.9 की तरह इस समर्थन में शामिल होना चाहिए (?) लेकिन मुझे यकीन नहीं है कि यह सटीक है या यदि यह आपके मैन्युअल रूप से मैन्युअल वर्कअराउंड है जब तक कि आप पाइथन 3 पर अपना कोड पोर्ट न करें। मुझे लगता है कि यह वास्तव में नहीं है मामला।

संबंधित मुद्दे