Twisted howto docs for using Agent over SSL建议使用创建ContextFactory
,但API docs for t.w.c.Agent显示contextFactory
参数现在应该是实现t.w.i.IPolicyForHTTPS
的对象。源代码看起来像包装旧的ContextFactories来实现新接口,但它会发出弃用警告。
如何使用新界面设置SSL方法(例如SSLv3)?
使用旧的ContextFactory
,我可以理解我的代码可以接收PyOpenSSL OpenSSL.SSL.Context
的位置,并使用该对象设置SSL方法。使用新界面,我不清楚我的代码可以在哪里设置SSL方法。
答案 0 :(得分:1)
如果您确实需要设置SSL方法(默认值为TLS 1.0或更高版本),则需要子类twisted.web.client.BrowserLikePolicyForHTTPS(未经测试):
from OpenSSL import SSL
from twisted.internet import reactor, ssl
from twisted.web import client
class MyPolicy(client.BrowserLikePolicyForHTTPS):
def creatorForNetloc(self, hostname, port):
return ssl.optionsForClientTLS(
hostname.decode("ascii"),
extraCertificateOptions={'method': SSL.SSLv3_METHOD},
trustRoot=self._trustRoot
)
myAgent = client.Agent(reactor, contextFactory=MyPolicy())