工作项目上,需要在linux上搭建一个透明代理,用于代理ssl请求,并且使用自定义证书解密ssl请求。在网上找了一些工具试用,有开源的,也有不开源的,这里介绍下这个PolarPorxy。
工具官网为https://www.netresec.com/?page=PolarProxy,没有开源,但是有x64和arm版本,可以免费商用
操作步骤
1,在linux上下载安装。
这里安装的是x64版本,具体安装步骤见上面连接,略。
2,终端下载证书
使用另外一台机器访问 http://192.168.0.151:10080
(192.168.0.151为安装polarproxy的linux主机IP)
访问后可以直接下载证书
3,终端安装证书

PC上直接打开,一路下一步,三个步骤可以完成。其他设备的安装,例如android或者ios设备的证书安装参见我的其他文章。
4,终端上访问HTTPS网址
终端IP是192.168.0.215, polarproxyIP是192.168.0.151。
如果polarproxy安装在网关设备,应该只需要做一下端口转发就可以(443转发到polarproxy监听的10443)。本次试验的环境polarproxy不在网关,需要配置下网关上的防火墙规则
sudo iptables -I FORWARD -i eth1 -d 192.168.0.151 -p tcp --dport 10443 -m state --state NEW -j ACCEPT
或者直接用curl的命令完成转发
终端没安装证书的话会提示证书不受信任
安装证书后,随便找个网址测试下
curl --ssl-no-revoke --connect-to www.sohu.com:443:192.168.0.151:10443 https://www.sohu.com/
实际测试,可以正常访问HTTPS网站
5,查看polarproxy的日志和抓包文件
logs polarproxy可以看到相关的解析日志,192.168.0.215(发送请求的终端),17660→443端口的请求,域名是www.sohu.com跳转到了polarproxy. action:decrypt后,生成了pcap文件
打开pcap文件,可以看到https://www.sohu.com的请求记录的是http明文请求
总结:工具和方案可行,可以在不影响正常上网的情况下,完成https内容的解密
存在的问题就是不开源,具体的性能影响不好评估。