📅  最后修改于: 2020-10-26 05:25:13             🧑  作者: Mango
本章将重点介绍通过内置的CherryPy HTTP服务器启用的基于CherryPy的应用程序SSL。
Web应用程序中需要不同级别的配置设置-
Web服务器-链接到HTTP服务器的设置
引擎-与引擎托管相关的设置
应用程序-用户使用的应用程序
部署CherryPy应用程序被认为是一种非常简单的方法,其中所有必需的软件包都可以从Python系统路径中获得。在共享的Web托管环境中,Web服务器将驻留在前端,该主机允许主机提供程序执行过滤操作。前端服务器可以是Apache或lighttpd 。
本节将介绍一些解决方案,以在Apache和lighttpd Web服务器后面运行CherryPy应用程序。
cherrypy
def setup_app():
class Root:
@cherrypy.expose
def index(self):
# Return the hostname used by CherryPy and the remote
# caller IP address
return "Hello there %s from IP: %s " %
(cherrypy.request.base, cherrypy.request.remote.ip)
cherrypy.config.update({'server.socket_port': 9091,
'environment': 'production',
'log.screen': False,
'show_tracebacks': False})
cherrypy.tree.mount(Root())
if __name__ == '__main__':
setup_app()
cherrypy.server.quickstart()
cherrypy.engine.start()
基于CherryPy的应用程序可以支持SSL(安全套接字层) 。要启用SSL支持,必须满足以下要求-
让我们处理证书和私钥的要求-
openssl genrsa -out server.key 2048
openssl genrsa -des3 -out server.key 2048
该程序将要求输入密码。如果您的OpenSSL版本允许您提供一个空字符串,请这样做。否则,请输入默认密码,然后将其从生成的密钥中删除,如下所示:
openssl rsa -in server.key -out server.key
openssl req -new -key server.key -out server.csr
此过程将要求您输入一些详细信息。为此,必须发出以下命令-
openssl x509 -req -days 60 -in server.csr -signkey
server.key -out server.crt
新签署的证书有效期为60天。
以下代码显示了其实现-
import cherrypy
import os, os.path
localDir = os.path.abspath(os.path.dirname(__file__))
CA = os.path.join(localDir, 'server.crt')
KEY = os.path.join(localDir, 'server.key')
def setup_server():
class Root:
@cherrypy.expose
def index(self):
return "Hello there!"
cherrypy.tree.mount(Root())
if __name__ == '__main__':
setup_server()
cherrypy.config.update({'server.socket_port': 8443,
'environment': 'production',
'log.screen': True,
'server.ssl_certificate': CA,
'server.ssl_private_key': KEY})
cherrypy.server.quickstart()
cherrypy.engine.start()
下一步是启动服务器;如果成功,您将在屏幕上看到以下消息:
HTTP Serving HTTPS on https://localhost:8443/