您现在的位置是:首页 >技术杂谈 >【计算机网络之HTTP篇】HTTPS与HTTP的区别网站首页技术杂谈
【计算机网络之HTTP篇】HTTPS与HTTP的区别
目录
HTTPS产生的原因
HTTP协议是按照文本的形式来明文传递数据的,因此数据很容易被黑客劫持,发生泄密可能。 HTTPS协议则可以解决HTTP不安全的缺陷,HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层SSL。(可以理解为HTTPS=HTTP+SSL)
HTTPS工作原理
HTTPS要保证数据的安全传输,就需要对数据进行加密,这样网络上就不在直接传输明文了而是加密过的密文。加密方式整体上可以分为两种:对称加密和非对称加密
对称加密
对称加密使用一个密钥来对数据进行加密,这样可以得到一个密文,于是客户端就可以传输这个密文给服务器,服务器再使用这个密钥来解密密文,于是就可以避免数据被截取了。需要注意的是:客户端和服务器使用同一个密钥来进行加密和解密。
非对称加密
非对称加密需要使用到两个密钥:一个是公钥,一个是私钥。公钥和私钥是配对的,一个公钥只能配对一个私钥。服务器会生成一对公钥和私钥。非对称加密是为了解决对称加密的密钥安全传输,不被黑客截取。
公钥和私钥可以互相反着用:
- 公钥加密,私钥解密
- 私钥加密,公钥解密
非对称加密过程:
- 客户端向服务器发起建立连接请求,服务器会把公钥传输给客户端
- 客户端使用公钥对密钥进行加密得到密文,把密文传输给服务器
- 服务器使用私钥对密文进行解密得到密钥,服务器得到这个密钥就可以和客户端进行对称加密传输
-
由于对称加密的效率比非对称加密高很多, 因此只是在开始阶段协商密钥的时候使用非对称加密,后续的传输仍然使用对称加密
非对称加密的目的主要是使用服务器发送过来的公钥对对称加密传输的密钥进行加密来传输给服务器,保证客户端和服务器进行对称加密的密钥不被截取。
那么客户端在使用公钥对密钥进行加密的时候,怎么判断客户端使用的公钥是服务器发来的而不是黑客伪造的?客户端是怎么拿到这个公钥的?
于是就引出了数字证书来验证公钥的合法性
引入数字证书
1、在使用HTTPS协议前,服务器会先向权威机构申请数字证书,数字证书中包含了权威机构自己独有的私钥1加密的数字签名(系统效验和:验证是否被篡改)和一对新的公钥2、私钥2。
2、当客户端向服务器发送请求数字证书时,服务器会把新的公钥2放入数字证书中一起传输给客户端
3、客户端拿到数字证书后,会使用权威机构的公钥1(客户端的操作系统中会内置权威机构的公钥1)来解密数字签名得到一个校验和num1,另外对证书使用同样的算法来计算得到一个新的校验和num2,对比 num1 和 num2 是否相等,如果相等, 则说明证书是没有被篡改过的。
HTTPS完整工作流程
总结:引入数字证书和非对称加密都是围绕这个对称加密的密钥工作的。
- 引入数字证书是为了让客户端确保拿到服务器的非对称加密的公钥,防止公钥被篡改
- 客户端拿到非对称加密的公钥是为了确保对称加密的密钥传输给服务器,不被黑客获取
高频面试题:HTTPS与HTTP的区别
1、HTTP协议是超文本传输协议,数据是明文传输,具有安全风险,HTTPS是具有安全性的SSL加密传输协议,对数据进行加密传输
2、HTTPS协议需要向权威机构申请数字证书,保证服务器的身份是可信的
3、HTTP的连接相对简单,只需要经过TCP的三次握手就可以进行数据传输,而HTTPS的连接需要经过TCP的三次握手后,再经过SSL的握手才能进行加密数据传输
4、两者的默认端口不一样,HTTP的默认端口是80,HTTPS的默认端口是443