在请求数据的数据的时候,服务器使用的是https 请求,相对安全些,但是结果让我请求图片和资源的时候也使用https 请求,我之前写的http 请求根本用不了!我感到非常的不爽!后听公司的人说了下,后他们决定 重要信息使用https 访问,但是对于资源什么的使用http 吧! 开始没什么认识,只感觉到使用https 请求数据的时候,要经过安全验证,安全性很高!度娘了下!原来使用https 是要分场合的!不是什么时候都可以用的!https 是为了安全性而设置的,要验证很多的信息!相对应 http 请求的速度肯定有点慢!后看到下面的帖子,才明白,如果使用https 的话很麻烦的,无意给服务器和客户端增加了很大的压力! 所以呢,平时好不要使用https , 如果牵扯到个人隐私或者是其他的什么重要信息一定要这么做了!很多的时候你感觉有点问题,但是如果不去细细发觉的话,暂时没有什么问题,但是在你后面的维护,或者出问题的时候会弄的头痛不已!为了以后的方便,还是此刻好好的把每一件事做好,分析好!

  微软的很多网站都是通过https 加密过的!用户的登陆验证过程还可以理解,没有想到所有的文件资源居然也是通过https去访问,这个其实做的过于安全了。 一个几十兆的流文件,光服务端加密估计要消耗很多cpu和能源了,不过微软的服务器够power。 我们的客户端浏览器 对这些数据要进行解密验证,其实也耗费了很多的资源。那稍微说下,在我们Android程序里面访问服务器请求的时候尽量少使用 https 请求数据!否则非常的消耗性能!把精力用在适当的地方!

  如果说我说的很浮亏,那么我们好好看看https 的性能吧:

  1. HTTPS 一定要有明确的选择理由.

  a) HTTPS 实际上是SSL用于HTTP.

  b) 主要解决了两部分的问题.

  i.

  1. 信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书. 改证书只有用于对应的server 的时候,客户度才信任次主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue 还是从公众的地方issue, 客户端都是自己人,所以我们也肯定信任该server.

  ii.

  2. 通讯过程中的数据的泄密和被窜改. 这里有两个层次

  1. 一般意义上的https, 是 server 有一个证书.

  a) 主要目的是保证server 是他声称的server. 这个跟低一点一样.

  b) 服务端和客户端中件的所有通讯,都是加密的.

  i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程.

  ii. 加下来所有的信息往来都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然窜改也没有什么意义了.

  2. 少许对客户端有要求的情况下,会要求客户端也必须有一个证书.

  a) 这里客户端证书,其实类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份.

  b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体.

  (目前这种协议用于银行等金融里面比较多,例如炒股软件,工商银行什么的!)

  2. HTTPS 一定是expensive的.

  a) 本来简单的http协议,一个 get 一个response. 由于https 要还密钥和确认加密算法的需要.单握手需要6/7 个往返.

  i. 任何应用中,过多的round trip 肯定影响性能.

  b) 接下来才是具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密.

  i. 尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片. 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求.

  ii. 加密后数据量的影响.

  1. 这个我用128bit 的RC2 测试了一下,加密后数量跟加密前基本相同.

  3. HTTP VS HTTPS 的性能

  a) 这个由于很多人测试的背景不一样,由于时间太紧,我没有写出了一个类似 ACT 一样测试web https 的压力工具. 看了一下别人的观点.

  b) 有些人说https 的性能是 http 的 40 % , 有些人说可能80%.

  c) 我的观点.

  i. https 的关键性能影响是 CPU 和往返. 如果CPU 很强的话, 性能可能是有人讲的80%. 如果cpu 是瓶颈的话, 有人讲原来可以server 330-500个请求每秒,现在只有30-50%

  ii. 不需要用https 的地方,尽量不要用.

  这是区别!