这是pyOpenSSL完成握手的正确方式吗



关于这个过程如何工作,似乎缺乏令人惊讶的信息或文档,这让我很难确定我是否看到了正确的行为。我找到了state_string()调用,它为我提供了如下字符串:

在/连接初始化之前SSLv3读取服务器hello ASSLv3读取服务器证书ASSLv3读取服务器密钥交换ASSLv3读取完成的

如果我不确定正确的顺序,这并没有特别的帮助。对我来说,这看起来是对的,但问题是我在这些状态下前进的方法感觉不对。我在其他地方找到了这个代码片段:

while True:
    try:
        ssl_conn.do_handshake()
        break()
    except OpenSSL.SSL.WantReadError:
        pass

这是设置OpenSSL的正确方法吗?只需强制do_handshake()直到它停止抛出WantReadError?

我还注意到,这个套接字上对shutdown()和close()的调用发送RST,而不是TCP的常见FIN、ACK。这是恰当的行为吗?

谢谢。

为了将来的参考,这似乎是强制握手的合适方式。我之所以需要这样做,是因为我使用的接口恰好比直接连接慢。在短暂的睡眠中,我能够用最少的通话进行握手,并确认连接已接通,因为我可以发送数据。

至于我的第二个问题,答案是否定的,RST不是正确的行为。这是由于我的配置,所以我的中间人找不到要路由到的服务器,并抛出RST。正确的行为是TCP close()的典型FIN、ACK。

相关内容

  • 没有找到相关文章

最新更新