使用Twisted创建SSL-WEB服务器
使用Twisted创建SSL-WEB服务器
翻译: | gashero |
---|
Twisted web howto中并没有提及如何创建SSL加密的WEB服务器。其实这个过程很简单,只是需要一些信息而已,所以这里讲一下。
首先,创建SSL服务器需要一个私钥文件,和一个服务器证书。这里假设你是个开发者,只想要一个测试系统,所以也没必要去搞一个正式的公共证书来。OpenSSL就是你想要的。首先,我们生成一个私钥文件:
$ openssl genrsa > privkey.pem
然后生成一个自签名的SLL证书:
$ openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1000
好了,第一个挑战已经搞定了。下一步就是创建服务器了。假设你已经有了一个twisted web服务器,所以你也知道该在哪个端口监听。我们导入 ssl 模块,创建一个SSL服务器上下文,然后调用 reactor 的 listenSSL 方法:
from twisted.internet import reactor,ssl sslContext=ssl.DefaultOpenSSLContextFactory( '/path/to/privkey.pem', '/path/to/cacert.pem', ) reactor.listenSSL(port,site,contextFactory=sslContext)
同样在 twisted.application 中也很容易创建带有上下文的站点,不过这里就懒得介绍了。
gashero附加的内容:
需要使用ssl的功能还需要另外安装一堆东西。包括openssl(0.9.8g)、pyOpenSSL(0.6.0)。安装openssl时,debian源里面没有dev版本,只能自己编译,注意配置时要修改安装路径:
$ ./config --prefix=/usr/local
这样以后就可以正确的编译安装pyOpenSSL了,否则默认情况下找不到OpenSSL。