使用Twisted创建SSL-WEB服务器[转]
Posted in Unix,Linux,BSD, 学习 on March 31st, 2009 No Comments »
出自:http://gashero.yeax.com/?p=49
翻译:
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懒得介绍的内容,skysbird来介绍:
在 twisted.application 中,通过如下方式来启用服务器端的SSL支持:
sslContext = ssl.DefaultOpenSSLContextFactory(’./cert/prikey.pem’,’./cert/cacert.pem’)
internet.SSLServer([port number],ISignalFactory(f),contextFactory=sslContext
).setServiceParent(serviceCollection)
gashero附加的内容:
需要使用ssl的功能还需要另外安装一堆东西。包括openssl(0.9.8g)、pyOpenSSL(0.6.0)。安装openssl时,debian源里面没有dev版本,只能自己编译,注意配置时要修改安装路径:
$ ./config –prefix=/usr/local
这样以后就可以正确的编译安装pyOpenSSL了,否则默认情况下找不到OpenSSL。