首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cherrypy服务器上的瓶子+ ssl

cherrypy服务器上的瓶子+ ssl
EN

Stack Overflow用户
提问于 2012-05-01 05:36:50
回答 2查看 7.4K关注 0票数 11

我正在尝试在Cherrypy的服务器上运行Bottle。我想获得SSL支持。

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

代码语言:javascript
复制
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()

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

我使用的是Python 2.7和Cherrypy 3.2.2

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-01 05:49:03

尝试使用以下命令:

代码语言:javascript
复制
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)
票数 11
EN

Stack Overflow用户

发布于 2012-05-01 05:55:05

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

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

较新版本的CherryPy在其独立服务器上使用cherrypy.quickstart(...)。这听起来更适合您的应用程序。我建议使用on this page中描述的配置,大致如下:

代码语言:javascript
复制
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(...)

这也会更符合_cserver documentation

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10390927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档