https其实就是建构在SSL/TLS之上的 http协议,所以https比http要占用更多的资源
http使用TCP 三次握手建立连接,客户端和服务器需要交换3个包,https除了 TCP 的三个包,还要加上 ssl握手需要的9个包,所以一共是12个包。http 建立连接,按照下面链接中针对Computer Science House的测试,是114毫秒;https建立连接,耗费436毫秒。ssl 部分花费322毫秒,包括网络延时和ssl 本身加解密的开销(服务器根据客户端的信息确定是否需要生成新的主密钥;服务器回复该主密钥,并返回给客户端一个用主密钥认证的信息;服务器向客户端请求数字签名和公开密钥)。
① 客户端发起HTTPS请求
客户端或者浏览器向服务器发送https请求
- 1
- 2
② 服务器将公钥返回给客户端
HTTPS的服务器端都有一套证书,可以自己生成,可以向授信公司或者组织申请花钱购买,区别就是不花钱浏览会弹出来警告,添加信任或者例外就可以了。如何构建一个https服务可以参考另一篇博客:
- 1
- 2
http://blog.csdn.net/mzh1992/article/details/53764652。
③ 浏览器接收到服务器公钥
浏览器收到公钥后会对公钥进行一系列的验证,如:颁发机构,过期时间等等。
认证失败会有警告,比如上面说的我们自己生成的证书,不是授信组织办法。
成功的话,会生成一个随机值作为对称加密的密钥稍后还会提及到。
用服务器返回的公钥对这个随机值进行加密
- 1
- 2
- 3
- 4
- 5
④ 加密后的随机值发送到服务器
服务器收到公钥加密后的随机值,会拿自己的私钥去解,解开之后得到的随机值
- 1
- 2
⑤ 客户端与服务器进行加密通信
客户端和服务器端信息数据通信,就是秘钥为随机值的,对称加密了
- 1
- 2
为什么要用对称加密呢,因为相对于非对称加密,对称加密对服务器的资源开销客户忽略不计。
ssl加速:
如果是HTTPS请求则每秒钟只能处理三个,并且CPU负荷急剧增加,高达95%左右的CPU占用率。为了解决上述问题,提高电子商务服务器的处理能力,应此出现了SSL加速解决方案,通过专用的电子商务加密、解密加速设备将繁重的、极易消耗服务器CPU资源的交换证书、协商加密算法及密钥,数据的加密解密工作从电子商务服务器上卸载到自身来处理,因此可以极大提高电子商务服务器的性能。而且这个过程对于客户端和服务器端都是透明的。
一般采用https的都是,在公网传输的web请求,像分布式的局域网数据传输是没有必要的,只会加重服务器开销降低性能。
要想提高https的性能可以用nginx做负载均衡,或者购买ssl加速卡nginx做负载均衡,可以参考: http://blog.csdn.net/mzh1992/article/details/53673571