3
为什么尝试使用此代码在TLS上运行TLS时握手失败?
我尝试实现一种协议,该协议可以twisted.protocols.tls使用内存在BIO上与OpenSSL的接口,从而可以使用TLS在TLS上运行TLS 。 我将其实现为协议包装,它看起来像是常规的TCP传输,但是它具有startTLS和stopTLS方法分别用于添加和删除TLS层。这对于TLS的第一层工作正常。如果我在“本机” Twisted TLS传输上运行它,它也可以正常工作。但是,如果我尝试使用startTLS此包装器提供的方法添加第二个TLS层,则会立即出现握手错误,并且连接最终将处于未知的不可用状态。 包装程序和使它工作的两个助手如下所示: from twisted.python.components import proxyForInterface from twisted.internet.error import ConnectionDone from twisted.internet.interfaces import ITCPTransport, IProtocol from twisted.protocols.tls import TLSMemoryBIOFactory, TLSMemoryBIOProtocol from twisted.protocols.policies import ProtocolWrapper, WrappingFactory class TransportWithoutDisconnection(proxyForInterface(ITCPTransport)): """ A proxy for a normal transport that disables actually closing the connection. This is necessary so that when …