2015-04-05 6 views
7

मैं नेटवर्किंग डिवाइस पर एक आरामदायक इंटरफ़ेस को मॉक करने के लिए एक वेब इंटरफ़ेस बनाने की कोशिश कर रहा हूं, यह नेटवर्किंग डिवाइस डायजेस्ट प्रमाणीकरण और HTTPS का उपयोग करता है। मुझे पता चला कि वेब सर्वर में डाइजेस्ट प्रमाणीकरण को कैसे एकीकृत किया जाए, लेकिन मुझे यह पता नहीं लग रहा है कि FLASK का उपयोग करके https कैसे प्राप्त करें, यदि आप मुझे दिखा सकते हैं कि कृपया ऐसा करने के लिए मुझे नीचे दिए गए कोड के साथ क्या करना होगा, इस पर टिप्पणी करें।क्या आप पाइथन फ्लास्क वेब सर्वर पर HTTPS कार्यक्षमता जोड़ सकते हैं?

from flask import Flask, jsonify 

app = Flask(__name__) 


@app.route('/') 
def index(): 
    return 'Flask is running!' 


@app.route('/data') 
def names(): 
    data = {"names": ["John", "Jacob", "Julie", "Jennifer"]} 
    return jsonify(data) 


if __name__ == '__main__': 
    app.run() 
+0

http://flask.pocoo.org/snippets/111/ –

उत्तर

3

यह भी एक चुटकी में काम करता है इस संहिता

from flask import Flask, jsonify 


from OpenSSL import SSL 
context = SSL.Context(SSL.SSLv23_METHOD) 
context.use_privatekey_file('server.key') 
context.use_certificate_file('server.crt') 




app = Flask(__name__) 


@app.route('/') 
def index(): 
    return 'Flask is running!' 


@app.route('/data') 
def names(): 
    data = {"names": ["John", "Jacob", "Julie", "Jennifer"]} 
    return jsonify(data) 


#if __name__ == '__main__': 
# app.run() 
if __name__ == '__main__': 
    app.run(host='127.0.0.1', debug=True, ssl_context=context) 
+5

एसएसएलवी 3 में पाउडर भेद्यता है। इसे TSL – OWADVL

+0

पर बदलें इस लिंक के बाद: http://flask.pocoo.org/snippets/111/ पृष्ठ के अंत में एक टिप्पणी बताती है कि टीएसएल में कैसे बदला जाए। –

8

अंतर्निहित (विकास) सर्वर के बजाय वास्तविक वेब सर्वर पर फ्लास्क परिनियोजित करें।

फ्लास्क दस्तावेज़ों के Deployment Options chapter देखें। Nginx और Apache दोनों जैसे सर्वर आपकी साइट के HTTP सर्वरों की बजाय HTTPS सर्वर सेट अप करने में संभाल सकते हैं।

सूचीबद्ध स्टैंडअलोन डब्लूएसजीआई सर्वर आमतौर पर प्रॉक्सी-फ़ॉरवर्डिंग कॉन्फ़िगरेशन में Nginx और Apache के पीछे तैनात किए जाएंगे, जहां फ्रंट-एंड सर्वर आपके लिए SSL एन्क्रिप्शन को अभी भी संभालता है।

+0

यदि आप mod_wsgi-express (https://pypi.python.org/pypi/mod_wsgi) का उपयोग करते हैं तो यह साइट को चलाने का एक आसान तरीका प्रदान करता है एचटीटीपीएस, प्लस में वेब सर्वर स्तर पर डाइजेस्ट प्रमाणीकरण प्रोटोकॉल को संभालने के लिए भी अंतर्निहित क्षमताएं हैं। सुझाव दें कि आप mod_wsgi मेलिंग सूची पर इसके बारे में पूछें क्योंकि StackOverflow एक चर्चा मंच नहीं है और इसलिए यहां आसानी से समझाया नहीं गया है। –

+0

धन्यवाद लोग – robm

+0

@ मार्टिजन पीटर्स करेंगे, क्या आप कृपया बता सकते हैं कि हमें "अंतर्निहित (विकास) सर्वर के बजाय, वास्तविक वेब सर्वर पर फ्लास्क क्यों तैनात करना चाहिए।" धन्यवाद –

6

उपयोग

from flask import Flask, jsonify 
import os 

ASSETS_DIR = os.path.dirname(os.path.abspath(__file__)) 
app = Flask(__name__) 


@app.route('/') 
def index(): 
    return 'Flask is running!' 


@app.route('/data') 
def names(): 
    data = {"names": ["John", "Jacob", "Julie", "Jennifer"]} 
    return jsonify(data) 


if __name__ == '__main__': 
    context = ('local.crt', 'local.key')#certificate and key files 
    app.run(debug=True, ssl_context=context) 

कभी openssl या pyOpenSSL का उपयोग अपने अब अजगर

+1

'स्थानीय.crt' और' local.key' उत्पन्न करने के लिए विधि 2: http: // kracekumar देखें।कॉम/पोस्ट/54437887454/एसएसएल-फॉर-फ्लास्क-स्थानीय-विकास – andyandy

+0

अजीब, यह 'http: //127.0.0.1: 5000 /' पर चलता है। यह सुरक्षित http पर चलाने के लिए नहीं है। मैं अभी भी 'http: //127.0.0.1: 5000 /' पर प्राप्त कर सकता हूं – prayagupd

1

में obselete बन इस वेबसर्वर है केवल परीक्षण और प्रदर्शन उद्देश्यों के लिए। आप ngrok का उपयोग कर सकते हैं, एक ओपन सोर्स भी जो आपके http ट्रैफिक को सुरंग करता है।

मूल रूप से ngrok एक सार्वजनिक यूआरएल (http और https दोनों) बनाता है और फिर आपके फ्लास्क प्रक्रिया पर चलने वाले किसी भी पोर्ट पर यातायात को सुरंग करता है।

https://ngrok.com/product

यह केवल स्थापित करने के लिए एक जोड़ी मिनट लगते हैं। आपको पहले सॉफ्टवेयर डाउनलोड करना होगा। फिर
./ngrok http [पोर्ट नंबर आपकी पायथन प्रक्रिया चल रहा है]

फिर यह आपके वेब ऐप तक पहुंचने के लिए आपको एक http और https url टर्मिनल में एक विंडो खोल देगा।

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