Skip to content


网络安全通讯(4)—-为Python Webserver添加HTTPS支持

前面我们说的都是为Apache服务器添加HTTPS的支持,今天我们讨论一下为Python的Webserver添加HTTPS的支持。

Python的Webserver基本上都是遵循Python的WSGI标准,包括我使用的CherryPy和webpy。在这两个Webserver的源代码中都有一个package叫做wsgiserver,里面只有__init__.py。这两个Webserver的wsgiserver内容几乎一样,而且明显有CherryPy的痕迹,看来CherryPy可能是WSGI标准的一个(半)官方实现,就好像Tomcat至于Servlet。

WSGI标准写的很是笼统,他只是说可以支持SSL,无他。只好阅读源代码,代码里面写的倒不是很差。需要同时给出ssl需要的服务器端的私钥和证书,分别使用如下两个变量存放。
ssl_certificate: the filename of the server SSL certificate.      服务器端的SSL证书
ssl_privatekey: the filename of the server’s private key file.    服务器端的私钥
我们只要遵循每个服务器的文档设置上就可以了。我们以CherryPy为例。(好吧,我说实话,我只会这个。)

在CherryPy的配置文件里面,可以设置这两个变量,分别指向文件系统的文件。
[global]
server.socket_port : 8081
server.socket_host : “0.0.0.0″
server.ssl_certificate : “conf/cert/server.crt”
server.ssl_private_key : “conf/cert/server.key”
这样,当我们重新启动的时候,我们的webserver就已经开始支持HTTPS了。如果这两个变量有一个没有设置的话,HTTPS就不会起作用。

这里我不得不说一下,CherryPy的文档已经算是不错的了,但是还是不行,只有在ServerAPI里面稍微提及了一下这两个变量而已。想要完整的搞明白,就只能祭出hack源代码大发,还得有连蒙带唬的功能。

至于webpy,就最好看看他的文档了。

Posted in python, 安全.

Tagged with , , .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.