Question

J'ai une application WSGI que je voudrais derrière SSL. Mon serveur WSGI est gevent .

Que serait une bonne façon de servir l'application via SSL, dans ce cas?

Était-ce utile?

La solution

Il semble que gevent a maintenant un module ssl. Si vous avez un serveur Web mis en œuvre sur le dessus de gevent, j'imagine que vous pouvez modifier pour envelopper les connexions entrantes avec la classe de prise ssl de ce module avant de le transmettre à des gestionnaires http.

http: //blog.gevent. org / 2010/02/05 / version 0-12-0-publiée /

http://www.gevent.org/gevent.ssl.html

Sinon, vous pouvez toujours utiliser un bon vieux apache + mod_wsgi pour servir votre application wsgi.

Autres conseils

Le module gevent.wsgi ne dispose pas des support intégré SSL. Si vous l'utilisez, le mettre derrière nginx qui recevra la demande via HTTPS, mais proxy-les à votre application à l'aide gevent non crypté HTTP.

Le module gevent.pywsgi n'ont intégré le support SSL et possède une interface compatible. Définissez les arguments de keyfile et certfile pour rendre l'utilisation du serveur SSL. Voici un exemple: wsgiserver_ssl.py :

#!/usr/bin/python
"""Secure WSGI server example based on gevent.pywsgi"""

from __future__ import print_function
from gevent import pywsgi


def hello_world(env, start_response):
    if env['PATH_INFO'] == '/':
        start_response('200 OK', [('Content-Type', 'text/html')])
        return [b"<b>hello world</b>"]
    else:
        start_response('404 Not Found', [('Content-Type', 'text/html')])
        return [b'<h1>Not Found</h1>']

print('Serving on https://127.0.0.1:8443')
server = pywsgi.WSGIServer(('0.0.0.0', 8443), hello_world, keyfile='server.key', certfile='server.crt')
# to start the server asynchronously, call server.start()
# we use blocking serve_forever() here because we have no other jobs
server.serve_forever()

Je laisserais l'accord serveur http avec le transport ssl.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top