【问题标题】:Python Twisted How To Set the SSL Method for twisted.web.client.Agent using new IPolicyForHTTPS?Python Twisted 如何使用新的 IPolicyForHTTPS 为 twisted.web.client.Agent 设置 SSL 方法?
【发布时间】:2014-10-03 13:50:54
【问题描述】:

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 方法。

【问题讨论】:

  • 为什么要支持 SSLv3? TLS 1.0 于 1999 推出。
  • 我实际上并不想支持 SSLv3——但有时您可能想要强制使用特定版本。诚然,我通常想强制使用更高版本,但如果我想了解服务器愿意接受什么(例如在运行诊断时),我可能想强制使用更低/损坏的版本。

标签: python ssl https twisted


【解决方案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())

【讨论】:

    猜你喜欢
    • 2015-08-03
    • 1970-01-01
    • 2011-02-09
    • 2016-01-22
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多