2013-10-31 16 views
9

मुझे पता है तुम अजगर 3 में एक साधारण HTTP वेब सर्वरअजगर 3 HTTPS वेबसर्वर

python -m http.server 

लेकिन वहाँ वेबसर्वर करने के लिए कनेक्शन को सुरक्षित करने का आसान तरीका है का उपयोग कर बना सकते हैं, मैं प्रमाणपत्रों को जेनरेट करने की जरूरत है? यह मैं कैसे करूंगा?

+0

मुझे लगता है कि आप पहले 'Google' पूछने का प्रयास कर सकते हैं। देखें http://www.piware.de/2011/01/creating-an-https-server-in-python/ और http://code.activestate.com/recipes/442473-simple-http-server-supporting- एसएसएल-सुरक्षित-कम्युनिकिका/ – starrify

+0

इसके अलावा: "असली" वेब सर्वर इसे संभालने के लिए और अधिक आम है, और केवल एप्लिकेशन कोड निष्पादित करने के लिए पायथन का उपयोग करें। – millimoose

उत्तर

14

सबसे पहले, आप एक प्रमाण पत्र की आवश्यकता होगी - तो मान हम एक फ़ाइल localhost.pem जो दोनों निजी और सार्वजनिक कुंजियां मौजूद में यह है,:

import http.server, ssl 

server_address = ('localhost', 4443) 
httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler) 
httpd.socket = ssl.wrap_socket(httpd.socket, 
           server_side=True, 
           certfile='localhost.pem', 
           ssl_version=ssl.PROTOCOL_TLSv1) 
httpd.serve_forever() 

सुनिश्चित करें कि आप wrap_socket लिए सही पैरामीटर निर्दिष्ट बनाओ!

+0

मुझे 'keyfile =' ... ''निर्दिष्ट करने की भी आवश्यकता है। इसके अलावा, उदा। कर्ल के साथ पूछताछ करते समय, यह कहता है 'curl: (56) GnuTLS recv त्रुटि (-110): टीएलएस कनेक्शन गैर-ठीक से समाप्त किया गया था' (जिसे अनदेखा किया जा सकता है, लेकिन कुछ बदसूरत लगता है) – Blauhirn

+1

आपको 'keyfile निर्दिष्ट करना होगा 'अगर प्रमाण पत्र में निजी कुंजी नहीं है, जैसा कि मैंने उल्लेख किया है - दस्तावेज़ीकरण [यहां] है (https://docs.python.org/3/library/ssl.html#combined-key-and- प्रमाण पत्र)। –

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