一、实验目的理解 TLS/SSL 协议的加密机制与握手流程掌握通过 SSLKEYLOGFILE 环境变量导出浏览器会话密钥的方法学会在 Wireshark 中加载密钥日志文件实现 HTTPS 流量的解密与分析观察解密前后的报文差异验证 TLS 加密与解密过程。二、实验环境项目配置操作系统Windows 10/11浏览器Google Chrome抓包工具Wireshark网络接口WLAN无线局域网密钥日志文件F:\share\sslkey.log三、实验原理HTTPS 基于 TLS 协议对应用层数据进行加密传输。正常情况下Wireshark 抓取的 HTTPS 流量只能看到加密的 Application Data无法获取明文内容。现代浏览器Chrome、Firefox、Edge 等支持通过 SSLKEYLOGFILE 环境变量将 TLS 会话密钥导出到外部文件。Wireshark 读取该密钥文件后可根据抓包中的 Client Random 匹配对应的会话密钥从而还原出 HTTP 明文数据。核心条件必须在浏览器启动前设置 SSLKEYLOGFILE 环境变量Wireshark 抓包必须包含完整的 TLS 握手过程ClientHello / ServerHello密钥日志文件、抓包文件和浏览器访问必须属于同一次 TLS 会话。四、实验步骤步骤 1配置 SSLKEYLOGFILE 环境变量右键此电脑 → 属性 → 高级系统设置 → 环境变量 → 用户变量 → 新建变量名SSLKEYLOGFILE变量值F:\share\sslkey.log注意设置完成后需完全关闭所有 Chrome 进程包括后台进程再重新启动浏览器新环境变量才能被 Chrome 读取。步骤 2准备密钥日志文件在 F:\share\ 目录下创建空文本文件 sslkey.log。初始状态下文件大小为 0 KB当 Chrome 访问 HTTPS 网站后浏览器会自动将 TLS 会话密钥写入该文件。步骤 3Wireshark 抓包启动 Wireshark选择 WLAN 接口开始抓包。在显示过滤器中输入tcp.port 443过滤出 HTTPS 流量。此时抓取的报文协议列显示为 TLSv1.2Info 列显示为 Application Data、Change Cipher Spec 等均为加密状态无法直接查看 HTTP 明文内容。步骤 4在 Wireshark 中加载密钥日志文件菜单栏选择编辑 → 首选项 → 协议 → TLS在 (Pre)-Master-Secret log filename 文本框中填入密钥文件路径F:\share\sslkey.log点击确定保存。步骤 5验证解密效果配置完成后Wireshark 自动根据 sslkey.log 中的会话密钥对抓包进行解密。此时在报文列表中可以观察到原本显示为 TLSv1.2 Application Data 的报文现在出现了 HTTP 协议可以清晰看到明文 HTTP 请求如POST /可以看到服务器响应如HTTP/1.1 200 OK同时仍能观察到底层的 TLSv1.2 Change Cipher Spec、Application Data 等握手和加密传输记录。五、实验结果分析5.1 解密前后对比对比项解密前解密后协议显示TLSv1.2HTTP TLSv1.2应用层内容Application Data不可读POST /、HTTP/1.1 200 OK明文可分析性无法分析可查看 URL、请求头、响应体5.2 关键观察从解密成功的截图图 5中可以观察到以下关键信息HTTP 请求明文能够直接看到客户端发起的POST /请求说明应用层数据已被成功还原HTTP 响应明文服务器返回的HTTP/1.1 200 OK状态码及响应内容可见TLS 底层仍在解密并未移除 TLS 层Wireshark 是在 TLS 记录之上额外解析出了 HTTP 层说明解密是在本地通过密钥还原的而非流量本身未加密。六、实验总结6.1 核心结论本次实验成功验证了通过 SSLKEYLOGFILE 配合 Wireshark 解密 HTTPS 流量的可行性。该方法的核心在于浏览器主动导出会话密钥 → Wireshark 利用密钥本地还原明文。整个过程中网络传输的数据始终是加密的解密仅在本地分析端完成不涉及对 TLS 协议本身的破解。6.2 安全边界该方法只能解密本机浏览器产生的流量无法解密其他设备或用户的 HTTPS 通信密钥日志文件包含敏感信息实验结束后应及时删除且不应在系统环境变量中长期保留 SSLKEYLOGFILE此方法主要用于协议分析、故障排查和安全研究禁止用于非法窃听他人通信。