2016-01-12 9 views
6

के साथ एसएसएल 3 और कमजोर सिफर को कैसे अक्षम करें मैंने एसएसएल/टीएलएस का उपयोग करने के लिए पाइथन 3 के साथ चेरीपी 3.8.0 को कॉन्फ़िगर किया है। हालांकि, मैं POODLE से बचने के लिए SSL3 को अक्षम करना चाहता हूं। मैंने प्रलेखन के माध्यम से खोज की लेकिन मुझे यह सुनिश्चित नहीं है कि इसे कैसे कार्यान्वित किया जाए।चेरीपी बिल्टिन एसएसएल मॉड्यूल (पायथन 3)

मैं cherrypy/अजगर ssl मॉड्यूल, builtin उपयोग कर रहा हूँ नहीं pyOpenSSL मैं पायथन 3.

उत्तर

6

के तहत उपयोग करने के लिए SSL3 अक्षम करने के लिए असमर्थ हूँ जो, आप डिफ़ॉल्ट को स्वीकार करने से ssl_context चर खुद तय करना चाहिए बल्कि। यहां पाइथन के अंतर्निहित ssl मॉड्यूल (अंतर्निहित cherrypy एसएसएल मॉड्यूल के बदले) का उपयोग करके एक उदाहरण दिया गया है।

import cherrypy 
import ssl 

ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23) 
ctx.options |= ssl.OP_NO_SSLv2 
ctx.options |= ssl.OP_NO_SSLv3 

cherrypy.config.update(server_config) 

जहां इस मामले में, SSLOpenSSL मॉड्यूल से है।

यह ध्यान देने योग्य है कि पायथन 3.2.3 में शुरू होने पर, ssl मॉड्यूल डिफ़ॉल्ट रूप से कुछ कमजोर सिफर अक्षम करता है।

इसके अलावा, आप विशेष रूप से सभी सिफर आप चाहते हैं

ciphers = { 
    'DHE-RSA-AE256-SHA', 
    ... 
    'RC4-SHA' 
} 

ctx.set_ciphers(':'.join(ciphers)) 

साथ आप web.wsgiserver मॉड्यूल से CherryPyWSGIServer उपयोग कर रहे हैं निर्धारित कर सकते हैं, तो आप

CherryPyWSGIServer.ssl_adapter.context.set_cipher_list(':'.join(ciphers)) 

यहाँ के साथ डिफ़ॉल्ट सिफर स्थापित करेगा उपर्युक्त विवरण देने वाले दस्तावेज का हिस्सा है: http://docs.cherrypy.org/en/latest/pkg/cherrypy.wsgiserver.html#module-cherrypy.wsgiserver.ssl_builtin

आखिरकार, यहां कुछ स्रोत हैं (सिम पूछना ilar प्रश्न) है कि आप को देखने के लिए चाहते हो सकता है:

+0

हाय माइकल, दुर्भाग्य से मैं पायथन के builtin 'उपयोग करने की आवश्यकता एसएसएल 'मॉड्यूल, चेरीपी के साथ,' पायपोन्सस्ल 'नहीं - जो' ओपनएसएसएल 'मॉड्यूल प्रदान करता है। मैंने आपके समाधान की कोशिश की लेकिन 'openssl s_client ... -ssl3' के साथ जांच कर यह एसएसएल 3 के साथ जुड़ता है, जिसे मुझे अक्षम करने के लिए सुनिश्चित करने की आवश्यकता है। – gc5

+0

@fbrundu - मेरी गलती, मैंने देखा कि आप Python3 कहते हैं लेकिन मैंने आपको Python2 जवाब दिया है! मैंने उपरोक्त उत्तर संपादित किया है। अगर यह काम करता है तो मुझे बताएं। –

+1

मुझे खेद है लेकिन यह काम नहीं करता है। 'Openssl s_client ... -ssl3' के साथ चल रहा है यह हमेशा मुझे 'प्रोटोकॉल: एसएसएलवी 3' देता है .. क्या यह हो सकता है कि' ssl_context' केवल 'pyOpenSSL' के साथ काम करता है जो Python3 पर चेरीपी के साथ काम नहीं करता है? – gc5

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