HTTPS(数字证书机制)
上面,无论数据加密还是签名,我们发现最重要的就是加密方法和加密密钥。
对于两台服务器交互,可能不用太担心,但是如果是webapp或者原生app,不法分子反编译前端代码后,就有可能拿到加密方法和加密key,怎么办呢?
这就属于HTTPS要解决的事情:
在加密算法中,有一种叫做非对称加密的算法,有公钥和私钥组成,他有个特点:公钥加密的数据,只有私钥能解密;私钥加密的数据,只有公钥能解密。
HTTPS 就是需要让客户端与服务器端安全地协商出一个对称加密算法。剩下的就是通信时双方使用这个对称加密算法进行加密解密。
①客户端启动,发送请求到服务端,服务端通过非对称加密算法(如RSA)生成公钥pubkey1和私钥prikey1。
②服务端将公钥pubkey1发给客户端,客户端用自己的非对称加密算法也生成一套公钥pubkey2和私钥prikey2,并将公钥pubkey2通过pubkey1加密后返回服务端。
③服务端用私钥prikey1解密后拿到pubkey2,并将确定好的未来交互的对称加密算法和密钥通过pubkey2加密,返回客户端。
④客户端用私钥pubkey2解密数据,拿到服务器给定的加密算法和密钥,双方开始用其数据通信。
这样仍有一个问题,如何证明公钥pubkey1加密的这串数字是客户端来的,即证明他就是他。。。
这就是HTTPS的数字证书,相当于网络中心的部分,证明他就是他。数字证书就是来干这个的。