Python Twisted:创建SSLv2 contex

2024-10-03 06:28:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个游戏服务器仿真器,游戏很老,使用不安全的SSLv2协议进行通信,我可以通过以下方式解密数据包:

ssl_sock = ssl.wrap_socket(sock, keyfile="Certificates/bfbc2.key", certfile="Certificates/bfbc2.crt", ssl_version=SSL.SSLv2_METHOD, do_handshake_on_connect=True, ciphers="DEFAULT")

如您所见,我使用了两个ssl模块(ssl,和OpenSSL)。 我意识到从“零”开始做这个庞大的项目是太多的工作,而且在某种程度上是不可能的。在

Twisted可以比socket模块做得更好,所以我决定切换它。在

问题是,我不知道如何创建SSLv2上下文。 我试过这样:

SSLContext = ssl.DefaultOpenSSLContextFactory('Certificates/bfbc2.key', 'Certificates/bfbc2.crt', sslmethod=ssl.SSL.SSLv2_METHOD)

但它给了我一个错误:

ValueError: No such protocol

如何让SSLv2在Twisted中工作?在


Tags: 模块key服务器游戏协议ssltwistedsocket
2条回答

看看回溯:

File "python2.7/site-packages/twisted/internet/ssl.py", line 113, in cacheContext ctx = self._contextFactory(self.sslmethod) File "python2.7/site-packages/OpenSSL/SSL.py", line 600, in __init__ raise ValueError("No such protocol") ValueError: No such protocol

异常来自OpenSSL包,它是pyOpenSSL的一部分。pyOpenSSL已放弃对SSLv2的支持。您可能可以找到仍然支持SSLv2的旧版本的pyOpenSSL(您可能还需要找到与旧pyOpenSSL兼容的Twisted的旧版本)。在

另一个选择是使用单独的工具(如stunnel)终止SSLv2。在

类似地,您可能需要确保本机OpenSSL库的构建实际上仍然支持SSLv2。最近的版本很可能没有这个特性(原因很明显)。在

目前,OpenSSL通常不支持SSLv2(通常甚至SSLv3),因为它不安全。由于Twisted最终使用OpenSSL,所以在尝试使用SSLv2时会得到No such protocol。在

相关问题 更多 >