https的实现步骤
程序员文章站
2022-07-03 11:50:24
https使用的是对称加密和非对称加密结合的方式来进行的,步骤如下:
1、首先是ssl握手阶段,客户端发送一个携带ssl版本等信息的数据到服务端,
2、服务端收到改信息,根据对...
https使用的是对称加密和非对称加密结合的方式来进行的,步骤如下:
1、首先是ssl握手阶段,客户端发送一个携带ssl版本等信息的数据到服务端,
2、服务端收到改信息,根据对应的ssl版本,发送非对称加密的公钥给客户端,自己保留私钥
3、客户端拿到公钥后,首先验证公钥的真实性,通过ca证书
4、验证通过,或者手动忽略,那么客户端就会使用该公钥加密另一个密钥——对称加密的密钥(客户端随机生成的字符长,位了提高效率,也为保障安全)
5、服务端收到该数据,首先用私钥解密,获取到对称加密的密钥。后续所有的数据,都只是用该对称密钥进行加密传输。
针对以上流程,在好长一段时间不能理解公钥是如何保障数据的真实性的,因为既然是公钥,那么每个人都能获得,那第三方岂不是可以破解从服务端发送来的用私钥加密的信息了吗,然后第三方用公钥加密自己的数据,与服务器进行交互,那还有啥意义?
后来突然想通了,因为https中非对称加密只是加密对称密钥,也就是我在上述步骤3中,获取到公钥后(每个人都能获取到),客户端用这个公钥加密随机生成的对称密钥,然后传递给服务端。那么这个用公钥加密的对称密钥,也只能是由拥有服务端的私钥才能解开,从而获取到真正用来传输数据的对称密钥,即使第三方获取到公钥,也是无法解析出用来实际传输数据的对称密钥的,后续所有的数据,都会以此对称密钥来进行。所以归根结底,就是保障对称密钥不被破解获取。