在 CentOS(或任何 Linux 系统)上,通常所说的“Sniffer(嗅探器/抓包工具)”一般是指 tcpdump、Wireshark(命令行版 tshark)等网络抓包工具。
针对你的问题**“能抓 HTTPS 包吗?”**,答案是:
抓包工具工作在 网络层/传输层,它可以完整地捕获到客户端和服务器之间所有的 TCP 数据包,包括 HTTPS 的:
因为 HTTPS 是在 HTTP 之下加了一层 TLS/SSL 加密,所以如果没有密钥,抓包工具只能看到“双方在建连和传加密数据”,无法直接看到你访问了什么 URL、提交了什么表单、返回了什么内容。
如果你有权限控制客户端或服务器,有几种常见方式可以解密 HTTPS 流量:
现代 TLS 普遍使用前向保密(PFS/ECDHE),所以仅有服务器私钥是无法解密的。你需要客户端导出“会话密钥”。
curl 支持 SSLKEYLOGFILE 环境变量。在 CentOS 上执行:export SSLKEYLOGFILE=/tmp/sslkey.log
tcpdump -i any -w https.pcap port 443 # 另开一个终端抓包
curl https://example.com # 发起请求,密钥会写入 sslkey.log
然后把 https.pcap 和 sslkey.log 拿到 Wireshark 中,配置 TLS -> (Pre)-Master-Secret log filename 指向 sslkey.log,即可看到解密后的 HTTP 明文。如果你是想监控经过 CentOS 服务器的流量,或者在这台机器上做代理:
mitmproxy 或 Charles(在 Linux 上用 mitmproxy 较多)。tcpdump 抓包。如果你拥有 HTTPS 服务器的私钥(且服务器配置没有使用前向保密,即使用的是传统的 RSA 密钥交换):
TLS 协议设置中,添加服务器的 IP 和私钥文件(PEM格式)。在 CentOS 上安装并使用抓包工具:
# 安装 tcpdump
yum install -y tcpdump
# 抓取 443 端口的包并保存
tcpdump -i eth0 port 443 -w https_capture.pcap
# 安装命令行版 wireshark (tshark) 可用于简单分析
yum install -y wireshark
tshark -r https_capture.pcap -Y "tls" # 查看 TLS 相关包