是否可以根据服务器的 public 密钥验证保存的 SSL 会话

Is it possible to verify a saved SSL session against public key of server

这是我正在尝试做的事情:

问题如下: - 我认为这可以通过为特定请求存储加密的 SSL 流量来实现,并且在服务器端,我可以根据商家证书的 public 密钥验证它(比方说,newegg)。

但是,我不完全确定这是否可行,而且我一直在编写代码。的代码片段将不胜感激(只要它不是直接来自 openssl 命令:))

理论上应该可以根据服务器证书(即证书中的 public 密钥)验证捕获的 TLS 握手,以确保此握手是与服务器创建的。但是,仅凭这一点并不能证明解密数据和 TLS 握手属于同一个 TLS 会话。为此,您还需要连接的(预)主密钥。

请注意,修改机器人将从内部 SSL 状态和加密流量中提取(预)主密码,将此密码和加密流量与普通流量一起存储,并编写一些代码来验证所有这些都属于一起不是一项微不足道的任务。根据所使用的 SSL 库,可能需要深入挖掘内部结构并使用未记录的(非 API)函数来执行此操作或直接从某些内部结构中获取信息。

Code snippets for would be appreciated (as long as it's not straight out of openssl commands :))

最新版本的 OpenSSL 具有 SSL_SESSION_get_master_key 功能。但我不知道 OpenSSL 中有任何 API 可用于验证和解密嗅探会话。你可以看看 Wireshark 的源代码。

如果您可以信任 bot 本身,那么让 bot 对解密的流量进行签名以便检测虚假数据会简单得多。