0
点赞
收藏
分享

微信扫一扫

软件运维 --- https如何实现服务器端抓包

在服务器端抓取HTTPS流量并解密内容,需要特殊配置以获取明文数据。以下是几种常用方法及步骤:

方法1:使用SSL/TLS会话密钥导出(推荐)

原理:通过导出会话密钥,用Wireshark等工具解密已捕获的加密流量。

步骤:

  1. 设置环境变量(以OpenSSL/LibreSSL为例):



    bash


    Copy
    Download



export SSLKEYLOGFILE=/path/to/sslkeylog.log

支持此功能的应用程序(如Nginx、Node.js、Python的ssl模块)会自动将会话密钥写入该文件。

  1. 重启服务:
    确保应用使用支持密钥导出的SSL库(如OpenSSL 1.1.1+)。
  2. 捕获流量:



    bash


    Copy
    Download



tcpdump -i eth0 -w capture.pcap port 443

  1. 用Wireshark解密:
  • 打开capture.pcap
  • Preferences > Protocols > TLS
  • (Pre)-Master-Secret log filename中指定sslkeylog.log

方法2:配置前端代理(终止HTTPS)

原理:在反向代理(如Nginx)上终止HTTPS,将明文流量转发到后端,在代理层抓包。

步骤:

  1. 配置Nginx终止HTTPS:



    nginx


    Copy
    Download



server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
    
    location / {
        proxy_pass http://backend_server:8000;  # 明文转发
        proxy_set_header Host $host;
    }
}

  1. 在Nginx与后端之间抓包:



    bash


    Copy
    Download



tcpdump -i lo -w http_traffic.pcap port 8000

此时流量为HTTP明文。

方法3:使用中间人工具(mitmproxy)

原理:在服务器本地作为代理,拦截并解密HTTPS。

步骤:

  1. 安装mitmproxy:



    bash


    Copy
    Download



pip install mitmproxy

  1. 启动拦截代理:



    bash


    Copy
    Download



mitmproxy --mode transparent --ssl-insecure

  1. 配置iptables重定向流量:



    bash


    Copy
    Download



iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDIRECT --to-port 8080

  1. 查看明文流量:
    通过mitmproxy控制台实时查看或导出流量。

方法4:使用调试工具(strace/gdb)

适用场景:调试单个进程的TLS通信(不推荐生产环境)。

示例(strace):

bash

 

Copy

 

Download

strace -e trace=read,write -s 9999 -p <PID> 2>&1 | grep 'read\|write'

此方法可能输出加密数据片段,需结合其他分析。

举报

相关推荐

0 条评论