【问题标题】:Can SSL context options be set when using Twisted endpoints?使用 Twisted 端点时可以设置 SSL 上下文选项吗?
【发布时间】:2014-09-15 14:15:15
【问题描述】:

我正在用 Python+Twisted 编写一个服务器,它使用端点 [1] 来允许配置监听连接。该文档没有显示任何明显的(对我来说!)使用端点字符串为 SSL 上下文对象设置选项的方法。我在源代码中四处寻找,看起来为 SSL 连接返回的 IStreamServerEndpoint 对象具有类似 _context 的属性,我可以摆弄,但这似乎有点笨拙。我想知道是否有某种方法可以让我设置 SSL 上下文选项,而无需破解端点内部结构。 (我想设置上下文以便能够验证客户端证书)。

谢谢, 卡尔

[1]https://twistedmatrix.com/documents/current/core/howto/endpoints.html

【问题讨论】:

    标签: python ssl twisted pyopenssl


    【解决方案1】:

    twisted.internet.endpoints.SSL4ServerEndpoint 接受一个参数给它的初始化器,sslContextFactory。此对象用于创建与该服务器端点建立的连接所使用的 TLS 上下文。

    如果您提供自己的上下文工厂,那么它可以在将上下文对象返回给端点之前以您喜欢的任何方式配置它们。

    【讨论】:

    • 有没有办法在使用端点字符串的同时使用endpoints.SSL4ServerEndpoint? IE。我还可以使用 endpoints.serverFromString() 然后在上下文中以某种方式硬塞吗?
    • 您为什么要这样做?如果你从serverFromString 得到一个服务器,你甚至不知道它是否支持 TLS,更不用说它有什么上下文参数了。您是否只想使用 serverFromString 但验证客户端证书?
    • 是的。理想情况下,我可以在端点字符串中放入一些东西,例如ssl:...:cert=...:key=...:verify_peers=1(参数名称可能是错误的)。我希望能够将端点配置为接受客户端 SSL 证书,但我不想重新发明所有进入端点的好解析。
    • 这将对 TLS 端点字符串描述进行合理的增强。您还可以编写自己的端点解析器插件,并让它们设置您喜欢的 TLS 上下文(并支持您喜欢的任何选项)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-16
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多