# tls_proxy **Repository Path**: cjlionel/tls_proxy ## Basic Information - **Project Name**: tls_proxy - **Description**: tls中间人透明代理 - **Primary Language**: C - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-11-16 - **Last Updated**: 2023-11-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tls trans proxy 在socket tcp通信基础上,通过代理获取/改变tls握手报文,获得密钥解密C/S tls通信,实现tls透明代理。 agent.c和proxy*.c均可作为程序入口 #6 ``` 主机配置: 环境:linux、openssl 3.0 服务器 192.168.144.1:9527 客户端 192.168.137.11 代理 192.168.137.10:9527(与服务器连接) / 192.168.137.10:9528(与客户端连接) 网关 192.168.137.10 代理端nat设置: 1. echo 1 > /proc/sys/net/ipv4/ip_forward 2. iptables -t nat -A PREROUTING -p tcp -d 192.168.144.1 --dport 9527 -j DNAT --to-destination 192.168.137.10:9528 3. sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.137.10 --dport 9528 -j SNAT --to-source 192.168.144.1:9527 ``` 协议栈: - TLS12_RSA_AES128_SHA256 > 1. 获取C&S random > 2. 替换certificate证书 > 3. 解密client key exchange报文获取pre master secret,再加密发送服务器 > 4. PRF导出与C&S一致的master secret和key bolck > 5. 重构握手finished。PRF导出C&S侧verify data,aes加密并计算mac > 6. 对C&S发送的Application消息进行解密,并消除填充 TODO: - EMS - ECDHE - session 复用 - tls1.3