https加密通信过程图解

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加密通信过程图解_第1张图片

① 客户端发起HTTPS请求

 客户端或者浏览器向服务器发送https请求

② 服务器将公钥返回给客户端

HTTPS的服务器端都有一套证书,可以自己生成,可以向授信公司或者组织申请花钱购买,区别就是不花钱浏览会弹出来警告,添加信任或者例外就可以了。如何构建一个https服务可以参考另一篇博客:

http://blog.csdn.net/mzh1992/article/details/53764652。

③ 浏览器接收到服务器公钥

浏览器收到公钥后会对公钥进行一系列的验证,如:颁发机构,过期时间等等。
认证失败会有警告,比如上面说的我们自己生成的证书,不是授信组织办法。
成功的话,会生成一个随机值作为对称加密的密钥稍后还会提及到。
用服务器返回的公钥对这个随机值进行加密

④ 加密后的随机值发送到服务器

服务器收到公钥加密后的随机值,会拿自己的私钥去解,解开之后得到的随机值

⑤ 客户端与服务器进行加密通信

客户端和服务器端信息数据通信,就是秘钥为随机值的,对称加密了

为什么要用对称加密呢,因为相对于非对称加密,对称加密对服务器的资源开销客户忽略不计。

一般采用https的都是,在公网传输的web请求,像分布式的局域网数据传输是没有必要的,只会加重服务器开销降低性能。
要想提高https的性能可以用nginx做负载均衡,或者购买ssl加速卡
nginx做负载均衡,可以参考:http://blog.csdn.net/mzh1992/article/details/53673571
  

你可能感兴趣的:(https)