Pergunta

Eu tenho um aplicativo WSGI que gostaria de colocar atrás do SSL. Meu servidor WSGI é Gevent.

Qual seria uma boa maneira de servir o aplicativo através do SSL neste caso?

Foi útil?

Solução

Parece que o Gevent agora possui um módulo SSL. Se você possui um servidor da Web implementado em cima do Gevent, imagino que você possa modificá -lo para envolver conexões de entrada com a classe SSL do módulo SSL antes de passá -la para os manipuladores HTTP.

http://blog.gevent.org/2010/02/05/version-0-12-0-released/

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

Caso contrário, você sempre poderá usar um bom e velho apache + mod_wsgi para atender ao seu aplicativo WSGI.

Outras dicas

o Gevent.WSGI O módulo não possui suporte SSL interno. Se você estiver usando, coloque-o atrás do NGINX, que receberia solicitação por HTTPS, mas proxy-os no seu aplicativo Gevent usando HTTP não criptografado.

o gevent.pywsgi O módulo possui suporte SSL interno e tem uma interface compatível. Colocou o keyfile e certfile Argumentos para fazer o servidor usar SSL. Aqui está um exemplo: 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()

Eu deixaria o servidor HTTP lidar com o transporte SSL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top