Https 工作原理浅析

最近,碰到个需求:服务器与移动端交互,保护敏感数据。原理之前的HTTP协议,如果自己搞加密,总会有点不安全,所以考虑到了直接用HTTPS。以前知道HTTPS干嘛,但是还没深入研究过,正好可以捣腾下。
如下图
https
1.浏览器与服务器握个手,告知服务器自己支持的加密方式并且拿到服务器CA证书和一个RSA、公钥S_PuKey,然后去校验(CA证书是由一些指定机构颁发的),如果有安全隐患就会提示危险(那么基本就是自己签的,像12306)。
2.接着,浏览器随机生成一个数作为之后交互数据的对称加密秘钥C_Key,把生成的这个数用S_PuKey加密给服务端。这个时候,第三方窃取者可以知道RSA,和S_PuKey,以及密文,但是却无法知道数据内容的明文(因为是非对称的加密方式,而这也是整个加密过程的核心)。服务器用私钥把S_PuKey加密的数据给解开,得到C_Key。
3.最后,服务器和浏览器通信就由这个C_Key对称加密数据。

可能还有双向认证,服务器也要验浏览器这边的证书,方式也差不多,核心也就是RSA阻隔窃取者。
至于自签的HTTPS证书,和机构颁发的HTTPS证书有什么区别,加密功能上看 没有什么区别,自签的照样可以有加密效果。主要是机构颁发的浏览器上可以看到认证的绿色标志,表示不是钓鱼网站,包括IOS item协议下载App的时候也要HTTPS协议(自签要双向认证,你总不可能让别人下个APP还要装个证书吧)