cherrypy服务器上的瓶子+ss

2024-05-21 17:09:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着把瓶子放在切里皮的服务器上。我想得到SSL支持。

到目前为止,我已经尝试过:

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()

但是上面抛出了一个ArgumentError,我无法在None对象(ssl_adpater)上设置属性。 显然,我需要将ssl_adapter属性设置为从SSLAdapter派生的某个对象,但找不到任何示例。

我使用的是Python2.7和Cherrypy 3.2.2

谢谢。


Tags: 对象keyfromimport服务器appssl瓶子
2条回答

我没有尝试过下面的方法,但希望它能给你指明正确的方向。

WSGI通常用于Apache Httpd这样的web服务器和pythonweb应用程序之间的通信,其中请求由web服务器处理,由Python应用程序处理。因为您想要一个独立的应用程序,所以使用WSGI适配器听起来不太合适,尽管在this document(但对于老版本的CherryPy)中提到了这一点。

较新版本的CherryPy使用cherrypy.quickstart(...)作为独立服务器。这听起来更适合你的申请。我建议使用如on this page所述的配置,大致如下:

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(...)

这也更符合^{} documentation

(顺便说一下,端口443是HTTPS的默认端口,而不是433。)

尝试使用以下方法:

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)

相关问题 更多 >