J'essaie d'utiliser gevent.pywsgi.WSGIServer
pour envelopper une application Flask. Tout fonctionne bien, cependant, quand j'essaie d'ajouter une clé et un certificat pour ssl, il n'est même plus capable d'accepter aucun client.Serveur Python Gevent Pywsgi avec SSL
Ceci est un exemple simple qui renvoie une erreur:
from gevent.pywsgi import WSGIServer
from flask import Flask
app = Flask(__name__)
app.debug = True
@app.route('/')
def index():
"""
Renders the homepage.
"""
return render_template('index.html')
if __name__ == "__main__":
app.config["SECRET_KEY"] = "ITSASECRET"
http_server = WSGIServer(('localhost', 5000), app, keyfile='key.pem',
certfile='cert.pem')
http_server.serve_forever()
Ceci est la trace de la pile de l'erreur:
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\gevent\greenlet.py", line 536, in run
result = self._run(*self.args, **self.kwargs)
File "C:\Python27\lib\site-packages\gevent\baseserver.py", line 26, in
_handle_and_close_when_done
return handle(*args_tuple)
File "C:\Python27\lib\site-packages\gevent\server.py", line 173, in
wrap_socket_and_handle
ssl_socket = self.wrap_socket(client_socket, **self.ssl_args)
File "C:\Python27\lib\site-packages\gevent\_sslgte279.py", line 702, in
wrap_socket
ciphers=ciphers)
File "C:\Python27\lib\site-packages\gevent\_sslgte279.py", line 270, in
__init__
raise x
SSLError: [SSL: HTTP_REQUEST] http request (_ssl.c:661)
Mon May 15 22:10:19 2017 <Greenlet at 0x29da440:
_handle_and_close_when_done(<bound method WSGIServer.wrap_socket_and_handle
of, <bound method WSGIServer.do_close of <WSGIServer a, (<socket at
0x29f8190 fileno=[Errno 9] Bad file de)> failed with SSLError
J'utilise Python 2.7.13 et 1.2.1 gevent
Pour ce qui compte, le certificat et la clé ont été générés par moi.