Python 这是完成pyOpenSSL握手的正确方法吗?

Python 这是完成pyOpenSSL握手的正确方法吗?,python,openssl,handshake,pyopenssl,Python,Openssl,Handshake,Pyopenssl,关于这个过程是如何工作的,似乎缺少令人惊讶的信息或文档,这使得我很难确定我是否看到了正确的行为。我找到了state_string()调用,它为我提供了如下字符串: 连接初始化之前 SSLv3读取服务器hello A SSLv3读取服务器证书A SSLv3读取服务器密钥交换A SSLv3读取完成一个 如果我不确定正确的顺序,这并不是特别有用。在我看来,这似乎是正确的,但问题是,我用来推进这些状态的方法感觉是错误的。我在别处找到了这段代码片段: while True: try:

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

连接初始化之前 SSLv3读取服务器hello A SSLv3读取服务器证书A SSLv3读取服务器密钥交换A SSLv3读取完成一个

如果我不确定正确的顺序,这并不是特别有用。在我看来,这似乎是正确的,但问题是,我用来推进这些状态的方法感觉是错误的。我在别处找到了这段代码片段:

while True:
    try:
        ssl_conn.do_handshake()
        break()
    except OpenSSL.SSL.WantReadError:
        pass
这是设置OpenSSL的正确方法吗?只要强制do_handshake()直到它停止抛出错误

我还注意到,在这个套接字上调用shutdown()和close()会发送RST,而不是通常的FIN,TCP的ACK。这是正确的行为吗


谢谢。

作为将来的参考,这似乎是一种适当的强制握手方式。我之所以需要这样做,是因为我使用的接口恰好比直接连接慢。在短时间的睡眠中,除了我能够用最少的通话获得握手外,我还确认了连接已断开,因为我可以发送数据


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

请添加您的最终代码好吗?