我有使用openssl库手动解析ssl / http流量的工具。它在大多数情况下工作正常,但是客户端/服务器使用扩展主密钥扩展时失败。
在握手的最后阶段发生了失败,其中执行了非常重要的测试编写数据。
据我所知,对于此扩展的正确工作,我需要使用特定的TLS字段(客户端问候,服务器问候,密钥交换)正确填充握手缓冲区,然后应该根据握手缓冲区的哈希生成主密钥。
不幸的是,这对我不起作用。
所以我的问题 - 应该对包装进行哈希以产生正确的主密钥?
对任何评论都会感激不尽。 谢谢。
PS:我从github下载了openssl的实用版本,其中实现了此功能。
openssl s_server / s_client使用corespond扩展,我可以在Wireshark中看到它,并且能够使用服务器pem文件解码流量。
答案 0 :(得分:1)
您需要执行以下操作来生成会话哈希
1)按照到达顺序附加除加密握手之外的所有握手信息,请不要将记录标题包含在握手中。仅邮件和邮件标题
2)基于哈希,简单地说, 散列算法因Cipher Suite和Protocal Version而异 TLS1和TLS1.1混合了SHA1和MD5(每个16位) TLS1.2主要是基于密码套件的SHA256或SHA384。