https简单理解
概念
https全称为Hyper Text Transfer Protocol over SecureSocket Layer,是以安全为目标的http协议,它在http的基础上,在应用层添加了SSL/TLS,保证传输内容的私密性,常用于支付交易等环节。
除了SSL层的添加,CA中心的认证是也是https之所以安全的关键,否则会被中间人攻击所欺骗。
HTTPS传输流程:
-
客户端向服务器发起请求
-
服务器收到请求后先随机生成一对公钥和私钥,然后将公钥和其他信息使用某种hash算法生成一个消息摘要,传递给CA
-
CA用自己的私钥加密消息摘要生成数字签名,并返回
-
服务器收到CA返回的数字签名后,生成一个数字证书,把CA返回的数字 签名和服务器的公钥及其他信息放到里面,返回给客户端
-
客户端拿到消息后,先去CA处拿到公钥,用CA公钥对数字证书中的数字签名部分进行解密,得到消息摘要A
-
客户端再用相同的hash算法对服务器的公钥及其他信息部分进行hash,得到消息摘要B
-
若消息摘要A和消息摘要B相同,则验证通过,未被篡改
-
客户端随机生成一个对称**,并用服务器的公钥进行加密,发送给服务器
-
服务器收到后,用私钥进行解密,得到对称**
-
用对称**对数据进行加密传送
-
TCP结束连接
为何用对称加密和非对称加密相结合的方式
- 非对称加密的算法RSA,PGP等,速度非常慢,不适合https这种实时性较强的场景,但是对称加密的速度很快,可惜在传输对称**的过程中,是一个麻烦,容易被攻击。
怎么办呢?https采用非对称**和对称**相结合的方式,用非对称加密加***,由于**一般远小于需要传输数据的长度,因此消耗可以忽略不记,我们在实际数据加密解密过程中,采用的还是对称**的方式。这样我们即保证了数据的安全性,又能够使https的性能得到保证。