一、基本概念
1、http:超文本传输协议
网络协议,客户端和服务端请求和应答的标准,用于从 WWW 服务器传输超文本到本地浏览器的传输协议 ,明文方式发送内容
2、https:安全套接字层超文本传输协议
http 的安全版,https = http + SSL + 证书,用来加密传输数据
3、SSL:(全称:Secure Sockets Layer 安全套接层)
是一种安全协议,SSL在传输层对网络连接进行加密(SSL协议使用密钥加密通信数据,有对称加密,非对称加密)
4、证书
需到ca申请证书,一般免费证书较少,因而需要一定费用
5、对称加密和非对称加密
对称加密:即加密的密钥和解密的密钥相同
非对称加密:非对称加密将密钥分为公钥和私钥,公钥可以公开,私钥需要保密,客户端公钥加密的数据,服务端可以通过私钥来解密
二、区别
1、https需要证书,一般不免费
2、http明文传输、https运用SSL加密传输
3、http和https使用的是完全不同的连接方式,用的端口也不一样,http是80,https是443
4、http无状态,https是由SSL+http构建的可进行加密传输、身份认证的网络协议,比http安全
三、请求过程(工作原理)
HTTP和HTTPS都需要在建立连接的基础上来进行数据传输,是基本操作,也就是经典TCP三次握手建连
1、http原理 (http----->tcp)
建立连接完毕以后客户端会发送请求给服务端
服务端接受请求并且做出响应发送给客户端
客户端收到响应并且解析响应显示给客户
2、https原理(重点)(http------>SSL----->tcp)
1)、在使用HTTPS是需要保证服务端配置正确了对应的安全证书,相当于身份证
2)、客户端发送请求到服务器端(包括客户端支持的加密协议及版本)
3)、服务器端返回证书和公钥到客户端,公钥作为证书的一部分而存在
4)、客户端验证证书和公钥的有效性,如果有效,则会随机生成一个随机数,用公钥对其加密,发送到服务端
5)、服务端接受到这个加密后的随机数后会用私钥对其解密得到真正的随机数,随后用这个随机数当做私钥对需要发送的数据进行对称加密
6)、客户端在接收到加密后的数据使用私钥(即生成的随机值)对数据进行解密并且解析数据呈现结果给客户
7)、SSL加密建立
HTTPS原理四、HTTP存在的问题和HTTPS解决的问题
1、被监听
http明文传输,通信过程数据容易被劫持。https是加密传输
2、被伪装
http通信时,无法保证通行双方是合法的,通信方可能是伪装的。比如你请求www.taobao.com,你怎么知道返回的数据就是来自淘宝,中间人可能返回数据伪装成淘宝。https用证书区分合法非法,相当于身份证
3、被篡改
http通信时易被篡改数据,接收方不知道数据已被修改。https对数据做了摘要,数据修改易被感知
五、https缺点
https保证了通信的安全,但带来了加密解密消耗计算机cpu资源的问题 ,不过,有专门的https加解密硬件服务器
六、其他问题
1、怎样保证公开密钥的有效性
怎么保证公钥是合法的,不是伪造的,证书解决了这个问题,证书由权威的第三方机构颁发,并对公钥做了签名。
2、金融机构出于安全考虑使用https,那么为什么百度、知乎也使用https?
为防止运营商(移动、电信等)劫持,运营商可能会在数据中插入各种广告,用了https,数据无法被劫持。
3、网络七层协议
网络七层协议由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
其中:HTTP协议对应于应用层,TCP协议对应于传输层、IP协议对应于网络层。HTTP协议是基于TCP连接的,三者本质上没有可比性。
4、TCP/IP、HTTP主要是干什么的?有什么用?
TCP/IP主要解决数据如何在网络中传输。
HTTP主要解决如何包装数据。
5、TCP与UDP异同
二者都是传输层协议,主要区别是可靠服务/不可靠服务
TCP/UDP区别
网友评论