目录
1.为什么使用HTTPS
HTTPS = HTTP + SSL/TLS(安全层,用于加密)
有了HTTP为什么还要有HTTPS?
因为服务器和客户端通过HTTP协议传输是明文传输,传输过程会被小黑劫持修改,不安全。
2.对称加密和非对称加密
对称加密:服务器或者客户端都用相同的密钥进行加密解密。
双方需要约定密钥(就像谍战片的暗号一样,需要事先告诉对方),而通信过程中会被小黑获取到密钥,之后传输相当于还是明文传输。
可见只用对称加密,还是不安全。
非对称加密:服务器生成一对公钥和私钥,客户端持有公钥,服务器持有私钥。使用公钥加密,用私钥解密。(公钥私钥是相对的,通常用于加密的称为公钥)。
3.应用
如果每次传输都用非对称加密也不行,因为开销太大了。因此通常对称加密和非对称加密一起使用:
但是上述情况完全安全了吗?
显然不是,因为有个bug:客户端不知道收到的公钥是否真的来自服务器,如果是小黑编造的密钥呢?显然这种情况客户端不该将对称密钥加密传递出去,如果被小黑获取破解,之后通信依旧相当于明文传输。
So,客户端需要对对方身份进行验证。这里也是通过一个权威的证书机构来认证。就像日常看到的店铺的证书,需要权威机构颁发认证它才是合法的。我们在浏览器中有时看到网站不安全弹窗提醒也是如此。
4.证书
具体流程如下:
关于证书以及客户端验证证书:
有小伙伴可能会问,小黑不能冒充认证机构吗?---类似于现实冒充公安局,不可刑。
总结:
1.生成对称加密是针对业务数据
2.服务器生成一对非对称密钥(公钥和私钥),把证书传给客户端
3.客户端拿到证书进行检验,如果检验通过,则会用上面服务器的公钥对对称密钥加密传给服务器,服务器解密获得对称密钥
4.双方通过对称加密传输
(前三步都是为了传递对称密钥做工作)