https上的扭曲

https上的扭曲,https,twisted,Https,Twisted,嗨,我有一个运行twisted的应用程序。我希望它通过https而不是http运行。我在哪里可以找到一个很好的例子呢?您需要做的就是使用reactor.listenSSL而不是reactor.listenTCP。介绍reactor.listenSSL的基本知识这里是一个在SSL上运行的twisted服务器的示例,该服务器具有基本身份验证: #/usr/bin/env python 用户={'admin':'admin', “用户”:“用户”, “测试”:“eW91IGFyZSBjcmF6eQo=

嗨,我有一个运行twisted的应用程序。我希望它通过https而不是http运行。我在哪里可以找到一个很好的例子呢?

您需要做的就是使用
reactor.listenSSL
而不是
reactor.listenTCP
。介绍
reactor.listenSSL

的基本知识这里是一个在SSL上运行的twisted服务器的示例,该服务器具有基本身份验证:

#/usr/bin/env python
用户={'admin':'admin',
“用户”:“用户”,
“测试”:“eW91IGFyZSBjcmF6eQo=”}
"""
使用内存中的普通密码进行基本身份验证的扭曲SSL Web服务器。
第一个参数是要服务的目录的路径;如果未提供,则使用当前文件夹(“.”)。
安装依赖项:
pip安装twisted pyOpenSSL服务\u标识
生成SSL证书:
mkdir~/.ssl&&cd~/.ssl
openssl genrsa>privkey.pem
openssl请求-新建-x509-密钥privkey.pem-out cacert.pem-9999天
用法:
需要以root用户身份运行(普通用户无法绑定到1024以下的端口);
使用测试用户/测试密码登录
sudo python twisted-web-ssl.py#为当前文件夹提供服务
sudo python twisted-web-ssl.py/home
"""
导入操作系统
导入系统
从twisted.web.static导入文件
从zope.interface导入实现
从twisted.python导入日志
从twisted.internet导入反应器,ssl
从twisted.web导入服务器、资源、防护
从twisted.cred.portal导入IRealm,门户
从twisted.cred.checkers导入MemoryUserNamePasswordDatabasedOnTuse
从twisted.python.log导入startLogging
惊人记录(系统标准)
home\u dir=os.path.expanduser(“~”)
sslContext=ssl.DefaultOpenSSLContextFactory(
join(home_dir,'.ssl/privkey.pem'),
join(home_dir,'.ssl/cacert.pem'),
)
类SimpleRealm(对象):
实施(IRealm)
定义初始化(自身,路径):
self.path=path
def requestAvatar(自我、化身、心智、*界面):
如果接口中存在resource.IResource:
return resource.IResource,文件(self.path),lambda:None
引发未实现的错误()
def主(根):
日志记录(sys.stdout)
#替代凭证存储实现:https://twistedmatrix.com/documents/current/api/twisted.cred.checkers.ICredentialsChecker.html
checkers=[InMemoryUsernamePasswordDatabaseDontUse(**用户)]
wrapper=guard.HTTPAuthSessionWrapper(
门户(SimpleRealm(根)、检查器、,
[guard.DigestCredentialFactory('md5','whatever.com'))
reactor.listenSSL(443,server.Site(resource=wrapper),
contextFactory=sslContext)
反应堆运行()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
如果len(sys.argv)>1,则root=sys.argv[1]
主(根)

HTTPS是HTTP over SSL。HTTPS=HTTP+SSL/TLS。见文件和

这是一个简单的例子:

from twisted.internet import reactor, ssl
from twisted.web import server, resource

sslContext = ssl.DefaultOpenSSLContextFactory(
    '/Users/wucao/Desktop/https/2_gw2.vsgames.cn.key',  # Private Key
    '/Users/wucao/Desktop/https/1_gw2.vsgames.cn_bundle.crt',  # Certificate
)

class MainResource(resource.Resource):

    isLeaf = True

    def render_GET(self, request):
        request.responseHeaders.addRawHeader("Content-Type", "text/html; charset=utf-8")
        return "<html><body>Hello World</body></html>"


site = server.Site(MainResource())
reactor.listenSSL(443, site, sslContext)
reactor.run()
从twisted.internet导入,ssl
从twisted.web导入服务器,资源
sslContext=ssl.DefaultOpenSSLContextFactory(
“/Users/wucao/Desktop/https/2_gw2.vsgames.cn.key”,#私钥
“/Users/wucao/Desktop/https/1_gw2.vsgames.cn_bundle.crt”,证书
)
类MainResource(resource.resource):
isLeaf=True
def render_GET(自我,请求):
request.responseHeaders.addRawHeader(“内容类型”,“文本/html;字符集=utf-8”)
返回“你好,世界”
site=server.site(MainResource())
reactor.listenSSL(443,站点,sslContext)
反应堆运行()