botella en servidor cherrypy + ssl

Estoy tratando de ejecutar Bottle encima del servidor de Cherrypy. Quiero obtener soporte SSL.

Hasta ahora he intentado esto:

from bottle import Bottle, route from cherrypy import wsgiserver app = Bottle() @app.route("/") def index(): return "Hello" server = wsgiserver.CherryPyWSGIServer( ('0.0.0.0', 443), app) server.ssl_adapter.private_key = 'server.key' server.ssl_adapter.certificate = 'server.crt' server.start() 

Pero lo anterior arroja un ArgumentError que no puedo establecer propiedades en un objeto Ninguno (ssl_adpater). Aparentemente necesito establecer la propiedad ssl_adapter en algún objeto que se derive de SSLAdapter, pero no pude encontrar ningún ejemplo.

Estoy usando Python 2.7 y Cherrypy 3.2.2

Gracias.

Trate de usar lo siguiente:

 import web from web.wsgiserver import CherryPyWSGIServer from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter ssl_cert = "path/to/ssl_certificate" ssl_key = "path/to/ssl_private_key" CherryPyWSGIServer.ssl_adapter = BuiltinSSLAdapter(ssl_cert, ssl_key, None) 

No he intentado lo siguiente, pero espero que te apunte en la dirección correcta.

WSGI es típicamente para la comunicación entre un servidor web como Apache Httpd y una aplicación web de Python, donde las solicitudes son manejadas por el servidor web y manejadas por la aplicación de Python. Como desea una aplicación independiente, el uso de un adaptador WSGI no suena del todo bien, aunque esto se menciona en este documento (pero para una versión anterior de CherryPy).

Las versiones más recientes de CherryPy utilizan cherrypy.quickstart(...) para sus servidores independientes. Esto suena más apropiado para su aplicación. Sugeriría usar una configuración como se describe en esta página , algo como lo siguiente:

 config={ 'server.socket_port': 443, 'server.ssl_module':'pyopenssl', 'server.ssl_certificate':'/.../host.crt', 'server.ssl_private_key':'/.../host.key', 'server.ssl_certificate_chain':'/.../ca_certs.crt' } cherrypy.config.update(config) cherrypy.quickstart(...) 

Esto también estaría más en línea con la documentación de _cserver .

(Por cierto, el puerto 443 es el predeterminado para HTTPS, no 433.)