HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。具体是如何进行加密,解密,验证的,且看下图。
image.png- 客户端输入https网址,链接到server443端口;
- 服务器手中有一把钥匙和一个锁头,把锁头传递给客户端。数字证书既是公钥,又是锁头
- 客户端拿到锁头后,生成一个随机数,用锁头把随机数锁起来(加密),再传递给服务器。这个随机数成为私钥,现在只有客户端知道
- 服务器用钥匙打开锁头,得到随机数。该随机数变成了新的锁头,把内容锁起来(加密),再传递给客户端。这个随机数服务器也知道了,并且用它来加密数据
- 客户端用自己手中的钥匙(随机数),解密后得到内容。客户端用私钥解密数据
- 接下来的客户端和服务器的数据交换都通过这个随机数来加密。只有客户端和服务器知道私钥,所以数据传输是安全的,不是明文的
- 传输加密后的信息这部分信息是服务段用私钥加密后的信息,可以在客户端被还原
- 客户端解密信息客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。
网友评论