似乎令人惊讶地缺乏有关此过程如何工作的信息或文档,这使我很难确定我是否看到了正确的行为。我找到了 state_string() 调用,它给了我这样的字符串:
之前/连接初始化 SSLv3 读取服务器问候 A SSLv3 读取服务器证书 A SSLv3 读取服务器密钥交换 A SSLv3 读取完成 A
如果我不确定正确的顺序,这并不是特别有用。对我来说这看起来是对的,但问题是我用来推进这些状态的方法感觉是错误的。我在其他地方找到了这个代码片段:
while True:
try:
ssl_conn.do_handshake()
break()
except OpenSSL.SSL.WantReadError:
pass
这是设置 OpenSSL 的正确方法吗?只需强制 do_handshake() 直到它停止抛出 WantReadError?
我还注意到,在此套接字上调用 shutdown() 和 close() 会发送 RST 而不是通常的 FIN、TCP 的 ACK。这是正确的行为吗?
谢谢你。