由于HTTP是明文传输,容易被中间人攻击,需要对数据进行加密。
HTTPS加密原理如下,
1.浏览器向服务器发送请求
2.服务端向浏览器返回公钥A
3.浏览器随机生成对称密钥X,使用公钥A加密后发送到服务端
4.服务端使用私钥A'解密浏览器发来的加密后的对称密钥A(X)
这样双方都有一个其他人无法知道的对称密钥X。双方的数据就都可以使用密钥X加密后再发送
如何验证公钥A来自请求的网站?
服务端向CA机构申请证书,CA机构对hash后的明文数据使用私钥加密生成签名,与原来的明文共同组成数字证书
浏览器使用CA机构的公钥对签名进行解密,如果与hash后的明文数据相等,则验证成功