我正在尝试调试两个 SIP 中继端点之间的 TLS 握手:.75 和 .82。正在使用相互身份验证。
.75 发送:
- 客户您好
- 证书、客户密钥交换
- 证书验证、更改密码规范、加密握手消息
- 加密警报
.82 发送:
- 服务器问候,证书,证书请求,服务器问候完成
- 更改密码规范,加密握手消息
- [确定,确认]
从 .75 上的 wireshark 跟踪来看,加密警报的详细信息是:
Content Type: Alert (21)
我怎么知道是什么导致了 82 失败?
我正在尝试调试两个 SIP 中继端点之间的 TLS 握手:.75 和 .82。正在使用相互身份验证。
.75 发送:
- 客户您好
- 证书、客户密钥交换
- 证书验证、更改密码规范、加密握手消息
- 加密警报
.82 发送:
- 服务器问候,证书,证书请求,服务器问候完成
- 更改密码规范,加密握手消息
- [确定,确认]
从 .75 上的 wireshark 跟踪来看,加密警报的详细信息是:
Content Type: Alert (21)
我怎么知道是什么导致了 82 失败?
您的 .75 机器(客户端)发送“加密警报”消息。如果它这样做了,那么这台机器在那个时候认为连接仍在运行,服务器将能够接收到警报消息,尤其是解密它。否则,发送该消息有什么意义?因此,很可能在收到此警报后,已经发送了来自服务器的 FIN 消息。很可能,客户端发送一个触发连接关闭的警报,服务器通过关闭传输介质(FIN 数据包)做出反应。
请注意,在正常的握手中,服务器将等待Finished
收到来自客户端的消息(在 之后的“加密握手消息” Change Cipher Spec
),然后再发送它自己的Change Cipher Spec
and Finished
。我们在这里看到,因此服务器能够处理Finished
来自客户端的消息,包括解密、MAC 验证和消息内容。
假设两种实现都符合标准,“加密警报”消息不是close_notify
警告。Aclose_notify
是一条警告消息,它警告接收者发送者有意终止连接。然后,接收者必须用close_notify
它自己的 a 来回复,表明它接受了这个事实。在这里,客户端发送了一条警报消息,但服务器没有发送警报消息作为响应,因此我们可能会推测我们没有目睹一对close_notify
. 最有可能的是,客户的警报是致命的警报,它告诉服务器有什么不对劲,并且连接注定要失败。然后服务器只能关闭传输介质,因为此时它无能为力。
没有迹象表明是什么困扰了客户端足以使其发送警报;但是,有相当决定性的迹象表明所有加密操作都进行得很顺利。
您可能希望在两个系统上运行两次网络捕获,以便您可以获得所有数据包的精确计时;它有助于重建事件的实际顺序。