概念
SSL(Security Socket Layer),安全套接字层
这种加密技术手段在网络模型中位于传输层和应用层之间。
作用
对我们的消息进行加密。当我们把数据消息编码成字节流之后,我们再用SSL加密技术对这些数据流进行加密。变成密文后,这样在传输的过程中,即使这些密文被别人劫持,别人也是无法获取到有用的信息的。
这些消息发到对方后再通过ssl进行解密。这样后,整个传输过程就是特别安全的。
重要元素
密匙
它的作用就是对我们的数据流进行加密和解密。
密匙分为公匙和私匙这两类。
当其中一把密匙是公匙的时候,那么另一把就是私匙。
公匙和私匙都能对我们的数据流进行加密和解密。
密匙库
其实就是一个装载的密匙的仓库。我们平时访问密匙的时候,就得从密匙库中访问。
信任库
我们在SSL加密用到的一个白名单。这个名单记录着我们对哪一些对端是信任的,允许与他进行加密通信。
加密流程
双边交流
- ssl协议版本
- 加密算法
- 随机数
这些双方达成一致可以为后面的加密做了必要的前置条件。
验证身份
首先我们需要验证对方是否是我们这边信任的人。
首先我们的客户端有两个库,一个密匙库,一个信任库。服务端也有密匙库和信任库。
客户端先从密匙库中拿出一个密匙对,通过网络传输到我们的服务端这边,然后服务端收到了,它就需要验证一下对端是否是可以信任的。如何判断呢,他就是从这个信任库里面查看,进行验证。如果验证通过了,就代表对端的客户端是我们信任的。此时就是单向验证。
而双向验证就是我们服务端再从密匙库中取出一个密匙对,通过网络传输到客户端这边,客户端采取同样的方式对服务端进行验证。此时就是双向验证。
数据的加密和解密
这个时候,我们的客户端就可以利用我们的密匙,把我们已经编码好的数据流进行加密成密文,然后传送到服务端这边。
服务端在得到这些密文之后,也用自身的密匙对这些数据进行解密。解密之后就变成明文了,这个时候,服务端就可以进行识别了。
服务端到客户端也是如此。