HTTPS介绍
https是是一种应用层协议,本质上来说是HTTP协议的一个升级版。HTTPS比HTTP更安全,HTTP是明文传输。HTTPS是加密传输。加密过程使用了三种加密手段:证书、对称加密、非对称加密。HTTPS相比于HTTP多了一层SSL/TSL,结构如下:
解密算法介绍:
-
证书加密:
服务器在使用证书加密之前需要去证书颁发机构申请该服务器的证书,在HTTPS请求过程服务器端会把本服务器的证书发送给客户端。客户端对证书进行验证,来验证服务身份。 -
对称加密:
对称加密是加密和解密过程使用同一个四月进行加密和解密,并且对称加密算法是公开的。所以秘钥是不能泄露的。一旦泄露加密就形同虚设。
正常对称加密私钥是需要再网络中进行传输的,在A端生成私钥,传递给B端,A端用私钥加密,传递数据报文到B端,B端使用接收到的私钥解密。
对称加密算法效率高,适合对大量数据进行加密。
在HTTPS请求过程中,对请求的响应内容加密采用的是对称加密算法。
- 非对称加密:
非对称加密的加密和解密过程使用的秘钥不同,一个公钥用来加密,对外部公开;一个私钥用来解密。私钥仅仅服务器端拥有。
非对称加密效率比较低,加密密文长度优先,适用于对少量数据进行加密。
HTTPS传输过程
HTTPS作为安全的应用层传输协议,采用了上面三种加密方式。
1、 正文内容数据会比较大,适用于对称加密。但是对称加密安全级别比较低,对称加密的秘钥需要再网络中进行传输容易被盗。所以需要进行加密。
2、使用非对称算法进行秘钥加密。因为秘钥的数据量比较小,所以采用非对称加密算法。
3、由于对称加密的公钥可以再网络中传输,所以需要保证公钥传输给正确的一方。这时就采用证书来进行验证。证书主要作用是保证数据发送给正确的交互方,而不是保证数据安全。
整个HTTPS传输过程需要发起两次请求。
详细请求过程如下:
- 客户端向服务器发起HTTPS请求,连接到服务器的443端口。
- 服务器把非对称公钥以证书形式回传给客户端。
- 客户端对接收到的证书进行验证。如果没有问题说明公钥合法。客户端生成一个随机的私钥,叫做client key,并用服务器传过来的公钥进行加密。用于对称加密数据。
- 客户端进行第二次http请求,把加密后的client key发送给服务器。
- 服务器端用自己的私钥进行解密,得到client key的明文,然后使用client key对响应内容进行对称加密。
- 将对称加密的数据传递给客户端,客户端使用对称解密,得到服务器发送的数据,完成第二次http请求。