python - botella en servidor cherrypy+ssl
(2)
Intenta 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)
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 None (ssl_adpater). Aparentemente necesito establecer la propiedad ssl_adapter a 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.
No he intentado lo siguiente, pero espero que te indique la dirección correcta.
WSGI es típicamente para la comunicación entre un servidor web como Apache Httpd y una aplicación web Python, donde las solicitudes son manejadas por el servidor web y manejadas por la aplicación Python. Como desea una aplicación independiente, usar 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 nuevas de CherryPy usan 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 parecido a esto:
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.)