今天又回过神来,准备看看web.py的ssl支持
结果调了半天才出来
坑爹1
中文cookbook地址 http://webpy.org/cookbook/ssl.zh-cn
英文cookbook地址 http://webpy.org/cookbook/ssl
中文版只给了一个例子,结果怎么也弄不出来
英文版上却了2个例子,第一个是0.37的 跟中文版那个一样,
另一个是0.36及以前的,说明0.36的可能会出exception(For version 0.36 and earlier (somewhat broken implementation, will crash on SSLException))
但是0.37版还没发布呢。。。。。
坑爹2
用0.36版运行0.37的例子
提示 raise ImportError("You must install pyOpenSSL to use HTTPS.")
用0.36版运行0.36的例子
提示 找不到cherrypy,没法import
我是两个lib都装了
结果进入坑爹3
坑爹3
不知道0.36这个例子的path是怎么出来的,好像也不是linux的吧
也不给个说明,我一直以为还有个lib没装,google了半天没结果,到最后重新看代码才发现这2个path有点不对劲
搜素了一下,才在python目录里找到
0.36修正后的例子
import web
from web.wsgiserver import CherryPyWSGIServer
from web.wsgiserver.ssl_builtin import BuiltinSSLAdapter
#ssl_cert = "path/to/ssl_certificate"
#ssl_key = "path/to/ssl_private_key"
ssl_cert = "C:/Python27/Lib/test/ssl_cert.pem"
ssl_key = "C:/Python27/Lib/test/ssl_key.pem"
CherryPyWSGIServer.ssl_adapter = BuiltinSSLAdapter(ssl_cert,ssl_key,None)
urls = ("/.*", "hello")
app = web.application(urls, globals())
class hello:
def GET(self):
return 'Hello, world!'
if __name__ == "__main__":
app.run()
0.37的例子,未验证,留个记号
import web
from web.wsgiserver import CherryPyWSGIServer
CherryPyWSGIServer.ssl_certificate = "path/to/ssl_certificate"
CherryPyWSGIServer.ssl_private_key = "path/to/ssl_private_key"
urls = ("/.*", "hello")
app = web.application(urls, globals())
class hello:
def GET(self):
return 'Hello, world!'
if __name__ == "__main__":
app.run()