CherryPy 至少从 2011 年开始支持中间证书(不确定版本)。它也有文档记录,如果您准确阅读 Deploy SSL support 文档部分,您会注意到以下内容。
如果你手头有一个证书链,你也可以指定它:
cherrypy.server.ssl_certificate_chain = "certchain.perm"
您可能知道最新版本的 CherryPy 3.6 存在 SSL 套接字问题,但它已在开发分支中修复,您可以从 repo 安装它,例如:
pip install hg+https://bitbucket.org/cherrypy/cherrypy
测试可能如下所示。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cherrypy
config = {
'global' : {
'server.socket_host' : '127.0.0.1',
'server.socket_port' : 8080,
'server.thread_pool' : 8,
'server.ssl_module' : 'pyopenssl',
'server.ssl_certificate' : '/path/to/certs/domain.com.crt',
'server.ssl_certificate_chain' : '/path/to/certs/ssl123_ca_bundle.pem',
'server.ssl_private_key' : '/path/to/certs/domain.com.key',
}
}
class App:
@cherrypy.expose
def index(self):
return '<em>Is this secure?</em>'
if __name__ == '__main__':
cherrypy.quickstart(App(), '/', config)
相关安全警告
请务必阅读此question。出于安全原因,我强烈建议您使用 Python 2.7.9+ 或 Python 3.4+,或者使用 pyOpenSSL 和最新的 OpenSSL。也不要忘记使用全面的 SSL 测试器来测试您的部署,例如Qualys's。