我先简单说下自己对HTTPS的大致描述,也是看了几篇博客之后的想法:
首先要简单了解对称加密和非对称加密:
对称加密:加密解密都用一个秘钥。
非对称加密:一个公钥,一个私钥。可以用公钥加密,私钥解密;也可以私钥加密,公钥解密。其他的组合都不行。
了解这点知识就够了,下面我们开始HTTPS的描述:
HTTPS先用非对称秘钥传输一个随机数,然后客户端和服务端都用这个随机数进行对称加密进行实际的数据传输。
首先明确一点:非对称加密很耗时,不可能对实际的数据都非对称加密来传输。所以我们需要对称加密来传输数据。
但问题是,我们怎么让双方都知道这个对称加密算法的秘钥呢?秘钥只能一边产生发送给另一边,总不可能两边一拍脑门,心有灵犀正好想出来一个相同的秘钥吧?
所以在传输数据前,要用非对称加密算法加密传输(即沟通好)之后对称加密算法的秘钥。
大概步骤(不严谨,但易于理解):
1.客户端发请求给服务端。
2.服务端返回数字证书给客户端(简单理解为非对称加密算法的公钥就行,对应的私钥还在服务端手上,没有泄露)
3.客户端生成一个随机数(对称加密算法需要的随机数),把这个随机数用上一步得到的公钥加密传给服务端
4.服务端收到加密的随机数,用私钥解密得到随机数。此时,客户端和服务端都拥有了这个随机数,并且它没有被泄露,即使黑客截取了公钥或者加密后的随机数都无法解密(因为公钥加密的随机数只能用私钥解密)!我们终于可以用它来进行对称加密传输了!
详细步骤:
转载于:https://www.jianshu.com/p/14cd2c9d2cd2
来源:https://www.cnblogs.com/FdWzy/p/12578943.html