![]() | 1 bearice 2014-10-31 18:11:27 +08:00 不能 |
![]() | 2 virusdefender 2014-10-31 18:18:51 +08:00 能吧 在本地导入证书 参考http://wangsheng14591.blog.163.com/blog/static/3277971020130465730354/ |
![]() | 3 spance 2014-10-31 18:18:58 +08:00 ![]() 看到的是经过加密的数据,里面基本都是不可见字符,无法知道里面的通信内容。 但ip头和tcp头还是可见的,知道你发往那个ip的那个port |
![]() | 4 lshero 2014-10-31 18:19:18 +08:00 客户端如果安装了并且信任了私有CA办法的证书还是有可能的 除非你改成双向的SSL连接 |
![]() | 7 < href="/member/tabris17" class="dark">tabris17 2014-10-31 18:29:42 +08:00 本地能。 中间人如果能搞到合法证书也能 |
![]() | 9 abelyao OP @virusdefender @tabris17 @lshero 几位都提到了中间人导入证书的事,这样听起来好像有证书是蛮简单的,但我还是不太明白是不是真的这么简单,我举个例子: 运行在 SAE 上面的微信公众帐号服务端,传输的时候都带有 AppSecret 之类的参数,而且是明文的(之前的情况,现在已经升级了),那是不是意味着 SAE 的机房网管作为中间人,完全是可以看到这些敏感资料的? |
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是无法解密的。 |
![]() | 11 spance 2014-10-31 18:54:19 +08:00 ![]() @abelyao 抓包在链路上任何一个中间节点都可以,但是他们无法知道传输内容。 不管有谁的证书,都不能知道,证书只是不对称加密中的公钥,没有私钥是无法解迷的。 况且这个过程是这样的,ssl握手过程就是用非对称加密方法传输了对称加密的算法和密钥,之后的通信都是用对称加密的密钥来加密,这个密钥只有握手的双发知道,中间人不知道这个密钥,自然无法解迷你的通信内容。 |
![]() | 12 tabris17 2014-10-31 18:56:25 +08:00 @abelyao 证书必须是合法的机构签发,必须在浏览器的受信任的机构列表里,除非是该机构不靠谱,比如CNNIC,或者机构的证书密钥泄漏造成伪造证书(以前有家被黑客入侵的根证书服务商密钥泄漏,后来这家公司就倒闭了),否则使用自己签发的证书客户端浏览器会有安全提示的 |
13 wanwangkangluo1 2014-10-31 18:58:30 +08:00 双向验证是验证client端合法性的,不要把这玩意扯进来了。 |
![]() | 14 RIcter 2014-10-31 18:59:30 +08:00 via Android 能,而且在geekpwn上有在https下劫持的show。 |
![]() | 15 jeansfish 2014-10-31 19:34:11 +08:00 自己做中间人就看到了,就看自己是不是信任的,比如fiddler2 |
![]() | 16 abelyao OP 还是觉得好乱… @wanwangkangluo1 @spance @tabris17 几位朋友的说法是只有握手双方可以解密,其他人抓到包也看不到数据, 而 @RIcter @jeansfish 几位朋友的说法则是可以… 是不是我理解有误?这是两种不同的答案… 还是说,看中间人的技术水平? |
![]() | 17 wangkangluo1 2014-10-31 21:29:53 +08:00 @abelyao 反正我搞了2个礼拜,TLSv1.2一点办法都没有。这样吧,我提供服务器和生成证书,谁会的,教教我,愿支付¥200作为酬劳。 |
![]() | 18 spance 2014-10-31 21:33:06 +08:00 |
![]() | 19 adow 2014-10-31 21:35:53 +08:00 其实可以把,证书就好比是密码,你在本地比如fliddler2上面添加那个证书就知道了你的密码,所以你机器上完全可以抓包。ssl 只是保证在传输的过程中被截获的内容是无法解密的吧,你亲手送人家一个密码当然就可以了。 |
20 wanwangkangluo1 2014-10-31 21:37:10 +08:00 @spance 说的比较在理。 |
![]() |   21 adow 2014-10-31 21:40:12 +08:00 传输的过程中指的是比如在你的路由器上拦截的时候,他的内容是无法得到明文的,当然如果他在别的地方使用你的证书的话应该也可以。 我对这个不是很清楚,所以只能打这样的比方。 在我之前一个帖子讨论 http 接口盗用的问题的时候(http://v2ex.com/t/90016#reply55),开始我们也认为用上ssl 别人就没法抓取内容了,其实他完全是可以的,他正常访问获得合法的证书后就可以很轻松的用fliddler 抓包获得明文。 |
![]() | 22 mornlight 2014-10-31 21:45:13 +08:00 只要你的私钥没有泄露,客户端那边没有信任奇奇怪怪的证书,按规矩来,就应该认为在中间环节上是不可解密的。 客户端有问题的话,根本不是你该管的事。他要是信任了一个自签名的证书,你一点办法都没有。 |
![]() | 23 Quaintjade 2014-10-31 21:47:16 +08:00 via Android @abelyao 理论上(体系、协议、算法的设计上)中间人无法解密,但由于实现时(软件作者写软件时)有意无意的疏漏,或使用者的错误,使得中间人攻击成为可能 比如设计上如果目标网站和证书对不上(或者证书不受信任),应该拒绝访问,或至少醒目提示,但很多软件会绕过这环节。 比如设计上只有经过安全审计的机构才能获得CA资格,但许多软件会把自己的证书加到根证书列表里。 比如设计上你从头到尾都应该用https通讯,实际上大多数人都是访问http,由浏览器去跳转到https。 还有演示可以长期留存的cookies,等你下次访问目标网站时触发,插入代码。 |
![]() | 24 adow 2014-10-31 21:47:45 +08:00 @mornlight 没错,ssl 就是保证,如果你妥善保管你的证书(私钥,就好比密码),那我们就是安全的,你私钥给人用了,那他就知道了。而所谓的抓包,他完全可以在获取到私钥的情况下来抓包,这时他就能知道内容了。 |
![]() | 25 abelyao OP |
![]() | 26 jeansfish 2014-10-31 23:35:06 +08:00 仔细看了下问题,其实理解了RSA加密就简单了。服务器知道私钥,暴露公钥,这样客户端获取私钥加密的内容,用公钥解密,客户端就信任这个内容是服务器送来的。客户端用公钥加密Post的内容,只有服务器有私钥才能解密。 @spance 说的对。fiddler就是把这个过程变成了两步。 |
27 julyclyde 2014-11-02 17:38:49 +08:00 抓包是在网卡层面的,当然能抓 你如果问能不能解密,那我告诉你,有私钥才能解,否则仅剩下理论上的可能性了 |