nginx 或者 squid 以代理的身份监听 ssl 流量的可行性? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nixilin
V2EX    问与答

nginx 或者 squid 以代理的身份监听 ssl 流量的可行性?

  •  
  •   nixilin 2015-11-10 18:06:42 +08:00 3649 次点击
    这是一个创建于 3629 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大概思路:
    一个wifi,由我来配置。分配IP自然是走dhcp。
    dhcp 有分配 proxy 的配置项,可以配置 proxy_ip:port 给 dhcp client
    分配好 proxy 下去给用户,用户(以 ios 为例)的系统流量都会走 proxy

    proxy 上的 http 服务很好配, google 一大把,关键是 https 。
    https 的配置,我找到了这个: http://shevacjs.com/2015/04/25/nginx-https-proxy/
    但是我不甘心啊,因为这么一来,就真的只是个代理而已,监听如何实现?

    我设想的模型如下:
    目标服务器,以工行网银为例,简称 V 主机
    流量都走 proxy 的用户,简称 S
    可以 ssh 上去配置的 proxy 主机,简称 T
    proxy 主机与用户有完整的证书信任关系,也就是说用户装了 proxy 所在机构相关的根证书。

    客户挂代理,发请求访问工行网银( V ), proxy 拿到请求之后得到请求明文,然后 proxy 以客户端的身份(可以理解为一个浏览器)向实际的工行网银( V )发起请求。
    V 返回请求结果,理论上说,因为 proxy ( T )是以客户端的身份访问 V ,所以 proxy ( T )可以拿到返回结果的明文。
    T 用自己的证书对返回的内容加密,然后返回给原始用户( S ,发起这个请求的人)。

    -----------------------------------------------------------------

    无所谓部署 nginx 还是 squid ,个人倾向 n 。 proxy 也就是 T ,相当于一个二次封装(加密)的角色。
    请问各位,这个监听能否做到?
    或者说,如果思路有问题,能否用其他方式实现?反正证书问题我可以想别的方法搞定。
    xjdrew
        1
    xjdrew  
       2015-11-10 18:36:31 +08:00
    如果 https 可以中间监听,那这协议还有什么意义呢?

    如果真想实现,那要给客户机器添加根证书,你用这个根证书签名一个假的工行网站,然后再转发所有请求。
    paw
        2
    paw  
       2015-11-10 19:48:17 +08:00
    SSL/TLS 除了中间人
    还可以 降级 不知道是不是这个说法,具体如下
    http://fex.baidu.com/blog/2014/08/ssl-frontend-hijack/
    kxjhlele
        3
    kxjhlele  
       2015-11-10 20:15:59 +08:00
    客户端证书问题 你要是能搞定 就可以监听。
    nixilin
        4
    nixilin  
    OP
       2015-11-10 20:24:24 +08:00
    @paw 降级是另一种实现形式,但是感觉工程量略大。因为无法统一所有网站的处理方式。有些狠一点的就真的手动拼接 https 字符串或者别的姿势,压根没法一个一个网站的匹配。
    nixilin
        5
    nixilin  
    OP
       2015-11-10 20:29:48 +08:00
    @xjdrew
    @kxjhlele
    这个问题主要是想从代理的层面搞定监听问题。确切的说也就是代理服务器的配置问题。
    其实就是想, proxy 在收到下面连过来的代理请求时,把整个请求记录下来(各种猥琐姿势),自己重发一次;收到对方网站的回复时,在 proxy 上就拿到回复的明文(各种猥琐姿势,看点啥改点啥),然后用 proxy 自己的证书加密丢给客户端。
    哪怕客户端看到的证书是 proxy 的(明显)也没关系,先配置好 proxy 再说。现在的难点就是 proxy 的配置。
    wdlth
        6
    wdlth  
       2015-11-10 20:31:54 +08:00
    正向代理加反向代理
    7654
        7
    7654  
       2015-11-10 20:36:22 +08:00
    我想说的是微软的 ISA 或 TMG 有这功能
    mornlight
        8
    mornlight  
       2015-11-10 20:39:37 +08:00
    如果客户端没有信任你自签名的证书,中间代理理论上无法监听到明文 https 通信。
    ericFork
        9
    ericFork  
       2015-11-10 21:13:29 +08:00
    没人好奇楼主想监听和修改的内容是什么吗?
    msg7086
        10
    msg7086  
       2015-11-10 22:39:18 +08:00
    > proxy 主机与用户有完整的证书信任关系,也就是说用户装了 proxy 所在机构相关的根证书。

    这个是最难的。你要么得获得用户电脑的管理员权限,要么得攻占下某个 CA 。
    前者可能某个数字或者企鹅勉强能做到。
    后者明显是想搞个大新闻。
    weyou
        11
    weyou  
       2015-11-10 22:42:22 +08:00
    @mornlight 对,这个才是重点。其实证书是可以伪造的,但是因为是自签名的, 浏览器端会出现不受信任的证书警告。
    hellogbk
        12
    hellogbk  
       2015-11-10 23:40:08 +08:00
    跟楼主各位说的差不多。
    经过代理的流量都是加密的。
    你能做的只是在握手阶段截取 SSL 证书换成你自己的。才有可能解密 HTTPS 的流量
    但是要想让客户端信任你的证书,你就必须把你的根证书装到客户端系统上去。。
    nixilin
        13
    nixilin  
    OP
       2015-11-11 09:10:14 +08:00
    @msg7086 小白用户那么多,懂 CA 证书啥的就不叫小白用户了。纯粹靠忽悠。

    @weyou 不 care 浏览器证书方面的警告。 proxy 上的证书报警可以靠忽悠装额外的证书搞定。
    msg7086
        14
    msg7086  
       2015-11-11 10:07:09 +08:00   1
    @nixilin 都忽悠装证书了,为什么不直接忽悠装个木马。
    nixilin
        15
    nixilin  
    OP
       2015-11-11 19:48:47 +08:00
    @msg7086 各种管家/卫士/助手实在难缠。我本来也就没有 win32 编程基础,与其费心思给马做免杀过这些东东,还不如在 proxy 层动动脑子。
    msg7086
        16
    msg7086  
       2015-11-11 21:03:36 +08:00
    @nixilin 你以为自己插 CA 就免杀了么……
    nixilin
        17
    nixilin  
    OP
       2015-11-12 09:18:43 +08:00
    @msg7086 好像很少有某某软件管家卫视把系统根证书啥的清理掉吧。。。
    所以才想的这么一招,全部走代理。
    虽然折腾起来很麻烦,但是我感觉比做免杀脱壳加壳什么的好点
    msg7086
        18
    msg7086  
       2015-11-12 11:18:34 +08:00
    @nixilin Chrome 对 SSL 证书把关很严格,如果发现有可疑证书就会参与调查。
    通常自签名 CA 要么用在企业或者团体内部,要么用在单一域名上。
    如果有人签发奇怪的 CA 用来代理银行或者邮箱的话,很快就会暴露的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2831 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 08:31 PVG 16:31 LAX 01:31 JFK 04:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86