到底启用 SSL 之后还能不能被抓包? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abelyao
V2EX    问与答

到底启用 SSL 之后还能不能被抓包?

  •  
  •   abelyao 2014-10-31 18:10:42 +08:00 via Android 15003 次点击
    这是一个创建于 4007 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,网站启用普通的 DV SSL 证书之后,客户端的其它软件,或者路由,网关,之类的,还能不能抓到数据包的 POST 内容?
    28 条回复    2014-11-02 19:31:52 +08:00
    bearice
        1
    bearice  
       2014-10-31 18:11:27 +08:00
    不能
    virusdefender
        2
    virusdefender  
       2014-10-31 18:18:51 +08:00
    能吧 在本地导入证书 参考http://wangsheng14591.blog.163.com/blog/static/3277971020130465730354/
    spance
        3
    spance  
       2014-10-31 18:18:58 +08:00   1
    看到的是经过加密的数据,里面基本都是不可见字符,无法知道里面的通信内容。
    但ip头和tcp头还是可见的,知道你发往那个ip的那个port
    lshero
        4
    lshero  
       2014-10-31 18:19:18 +08:00
    客户端如果安装了并且信任了私有CA办法的证书还是有可能的
    除非你改成双向的SSL连接
    abelyao
        5
    abelyao  
    OP
       2014-10-31 18:22:03 +08:00 via Android
    @lshero 能否详细说说双向 SSL 是什么?是网站那边设置的,还是…?
    abelyao
        6
    abelyao  
    OP
       2014-10-31 18:24:46 +08:00 via Android
    @spance 这个不怕,主要是数据包的内容,会不会像楼上几位说的,有证书就可以抓包了
    tabris17
        7
    < href="/member/tabris17" class="dark">tabris17  
       2014-10-31 18:29:42 +08:00
    本地能。

    中间人如果能搞到合法证书也能
    lshero
        8
    lshero  
       2014-10-31 18:43:54 +08:00   1
    @abelyao 向银行那样需要客户端也需要安装数字证书的就是双向SSL的 客户端网站都需要部署证书
    abelyao
        9
    abelyao  
    OP
       2014-10-31 18:51:12 +08:00
    @virusdefender @tabris17 @lshero
    几位都提到了中间人导入证书的事,这样听起来好像有证书是蛮简单的,但我还是不太明白是不是真的这么简单,我举个例子:
    运行在 SAE 上面的微信公众帐号服务端,传输的时候都带有 AppSecret 之类的参数,而且是明文的(之前的情况,现在已经升级了),那是不是意味着 SAE 的机房网管作为中间人,完全是可以看到这些敏感资料的?
    wanwangkangluo1
        10
    wanwangkangluo1  
       2014-10-31 18:53:50 +08:00
    http://www.fenesky.com/blog/2014/07/19/how-https-works.html
    你无法获取client端产生的PreMaster Secret是无法解密的。
    spance
        11
    spance  
       2014-10-31 18:54:19 +08:00   1
    @abelyao
    抓包在链路上任何一个中间节点都可以,但是他们无法知道传输内容。
    不管有谁的证书,都不能知道,证书只是不对称加密中的公钥,没有私钥是无法解迷的。
    况且这个过程是这样的,ssl握手过程就是用非对称加密方法传输了对称加密的算法和密钥,之后的通信都是用对称加密的密钥来加密,这个密钥只有握手的双发知道,中间人不知道这个密钥,自然无法解迷你的通信内容。
    tabris17
        12
    tabris17  
       2014-10-31 18:56:25 +08:00
    @abelyao 证书必须是合法的机构签发,必须在浏览器的受信任的机构列表里,除非是该机构不靠谱,比如CNNIC,或者机构的证书密钥泄漏造成伪造证书(以前有家被黑客入侵的根证书服务商密钥泄漏,后来这家公司就倒闭了),否则使用自己签发的证书客户端浏览器会有安全提示的
    wanwangkangluo1
        13
    wanwangkangluo1  
       2014-10-31 18:58:30 +08:00
    双向验证是验证client端合法性的,不要把这玩意扯进来了。
    RIcter
        14
    RIcter  
       2014-10-31 18:59:30 +08:00 via Android
    能,而且在geekpwn上有在https下劫持的show。
    jeansfish
        15
    jeansfish  
       2014-10-31 19:34:11 +08:00
    自己做中间人就看到了,就看自己是不是信任的,比如fiddler2
    abelyao
        16
    abelyao  
    OP
       2014-10-31 21:23:52 +08:00
    还是觉得好乱…
    @wanwangkangluo1 @spance @tabris17 几位朋友的说法是只有握手双方可以解密,其他人抓到包也看不到数据,
    而 @RIcter @jeansfish 几位朋友的说法则是可以…
    是不是我理解有误?这是两种不同的答案… 还是说,看中间人的技术水平?
    wangkangluo1
        17
    wangkangluo1  
       2014-10-31 21:29:53 +08:00
    @abelyao 反正我搞了2个礼拜,TLSv1.2一点办法都没有。这样吧,我提供服务器和生成证书,谁会的,教教我,愿支付¥200作为酬劳。
    spance
        18
    spance  
       2014-10-31 21:33:06 +08:00
    @abelyao
    我们说的“除握手双方外他人不知”,与那@jeansfish说的不矛盾。
    他说的是fiddler做代理的情况其实goagent也是这样,此时,直接的握手双方是fiddler与服务器,于是fiddler当然是明确知道传输内容的,然后用fiddler的伪造证书欺骗浏览器,返回原站数据。
    fiddler就是用它中间人特性来进行抓包分析的,而且还是你明确配置了代理指向了fiddler才发生。
    还是这句话,“除握手双方外他人不知”,另外,请不要过多的怀疑业界成熟广泛使用的https的安全防护能力。
    adow
        19
    adow  
       2014-10-31 21:35:53 +08:00
    其实可以把,证书就好比是密码,你在本地比如fliddler2上面添加那个证书就知道了你的密码,所以你机器上完全可以抓包。ssl 只是保证在传输的过程中被截获的内容是无法解密的吧,你亲手送人家一个密码当然就可以了。
    wanwangkangluo1
        20
    wanwangkangluo1  
       2014-10-31 21:37:10 +08:00
    @spance 说的比较在理。
    adow
        21
    adow  
       2014-10-31 21:40:12 +08:00
    传输的过程中指的是比如在你的路由器上拦截的时候,他的内容是无法得到明文的,当然如果他在别的地方使用你的证书的话应该也可以。
    我对这个不是很清楚,所以只能打这样的比方。
    在我之前一个帖子讨论 http 接口盗用的问题的时候(http://v2ex.com/t/90016#reply55),开始我们也认为用上ssl 别人就没法抓取内容了,其实他完全是可以的,他正常访问获得合法的证书后就可以很轻松的用fliddler 抓包获得明文。
    mornlight
        22
    mornlight  
       2014-10-31 21:45:13 +08:00
    只要你的私钥没有泄露,客户端那边没有信任奇奇怪怪的证书,按规矩来,就应该认为在中间环节上是不可解密的。
    客户端有问题的话,根本不是你该管的事。他要是信任了一个自签名的证书,你一点办法都没有。
    Quaintjade
        23
    Quaintjade  
       2014-10-31 21:47:16 +08:00 via Android
    @abelyao
    理论上(体系、协议、算法的设计上)中间人无法解密,但由于实现时(软件作者写软件时)有意无意的疏漏,或使用者的错误,使得中间人攻击成为可能

    比如设计上如果目标网站和证书对不上(或者证书不受信任),应该拒绝访问,或至少醒目提示,但很多软件会绕过这环节。
    比如设计上只有经过安全审计的机构才能获得CA资格,但许多软件会把自己的证书加到根证书列表里。
    比如设计上你从头到尾都应该用https通讯,实际上大多数人都是访问http,由浏览器去跳转到https。
    还有演示可以长期留存的cookies,等你下次访问目标网站时触发,插入代码。
    adow
        24
    adow  
       2014-10-31 21:47:45 +08:00
    @mornlight 没错,ssl 就是保证,如果你妥善保管你的证书(私钥,就好比密码),那我们就是安全的,你私钥给人用了,那他就知道了。而所谓的抓包,他完全可以在获取到私钥的情况下来抓包,这时他就能知道内容了。
    abelyao
        25
    abelyao  
    OP
       2014-10-31 21:58:31 +08:00 via Android
    @wangkangluo1
    @adow
    @Quaintjade
    @mornlight
    感动得泪流满面… 谢谢几位朋友的热心回答,大概明白意思了。
    待我慢慢消化,找个实际操作一下,我想我能理解得更好。
    jeansfish
        26
    jeansfish  
       2014-10-31 23:35:06 +08:00
    仔细看了下问题,其实理解了RSA加密就简单了。服务器知道私钥,暴露公钥,这样客户端获取私钥加密的内容,用公钥解密,客户端就信任这个内容是服务器送来的。客户端用公钥加密Post的内容,只有服务器有私钥才能解密。
    @spance 说的对。fiddler就是把这个过程变成了两步。
    julyclyde
        27
    julyclyde  
       2014-11-02 17:38:49 +08:00
    抓包是在网卡层面的,当然能抓
    你如果问能不能解密,那我告诉你,有私钥才能解,否则仅剩下理论上的可能性了
    tabris17
        28
    tabris17  
       2014-11-02 19:31:52 +08:00
    @abelyao 中间人需要替换合法证书才能获取明文数据
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3679 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 04:17 PVG 12:17 LAX 21:17 JFK 00:17
    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