#导出 rustls 的 ssl key 日志
创建进程特定的环境变量
std::env::set_var("SSLKEYLOGFILE", "<文件路径>");
也可以创建系统环境变量,rustls::KeyLogFile
会自动读取该环境变量,不过 Chrome 似乎也会读取该变量
创建 TLS 连接的客户端配置,然后连接到 TcpStream
let mut root_cert_store = RootCertStore::empty();
root_cert_store.extend(webpki_roots::TLS_SERVER_ROOTS.iter().cloned());
let mut config = ClientConfig::builder()
.with_root_certificates(root_cert_store)
.with_no_client_auth();
// KeyLogFile 会读取 Key 为 SSLKEYLOGFILE 的环境变量,然后写入日志到该文件路径
config.key_log = Arc::new(KeyLogFile::new());
let connector = TlsConnector::from(Arc::new(config));
...
该代码依赖 tokio
、tokio_rustls
、webpki_roots
#配置 wireshark
和大多数教程一样在 wireshark 的编辑->首选项->Protocols 下面找到 TLS
,然后在 (Pre)-Master-Sectet log filename
下面的输入框输入环境变量 SSLKEYLOGFILE
的值
参考文章:
https://www.cnblogs.com/theseventhson/p/14618157.html