SSL и приложения WSGI - Python

У меня есть приложение WSGI, которое я хотел бы поместить позади SSL. Мой сервер WSGI является gevent.

Что было бы хороший способ вручить приложение через SSL в этом случае быть?

5
задан RadiantHex 18 May 2010 в 12:40
поделиться

3 ответа

Похоже, у gevent теперь есть ssl-модуль. Если у вас есть веб-сервер, реализованный поверх gevent, я полагаю, вы можете изменить его, чтобы обернуть входящие соединения с помощью класса сокета ssl этого модуля, прежде чем передавать его обработчикам http.

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

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

В противном случае вы всегда можете использовать старый добрый apache + mod_wsgi для обслуживания своего приложения wsgi.

3
ответ дан 13 December 2019 в 05:31
поделиться

Я бы позволил http серверу разобраться с ssl транспортом.

2
ответ дан 13 December 2019 в 05:31
поделиться

Модуль gevent.wsgi не имеет встроенной поддержки SSL. Если вы используете его, поместите его за nginx, который будет получать запросы по HTTPS, но проксировать их вашему приложению gevent, используя незашифрованный HTTP.

Модуль gevent.pywsgi имеет встроенную поддержку SSL и совместимый интерфейс. Задайте аргументы keyfile и certfile, чтобы заставить сервер использовать SSL. Вот пример: 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()
7
ответ дан 13 December 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: