使用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。

Leave a Reply