标签:指定 链路层 响应 play 替换 包括 加密 文档 网络协议
文章原创于公众号:程序猿周先森。本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号。
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。HTTP协议,即超文本传输协议是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。HTTP协议是用于从万维网服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。众所周知,HTTP是一个无状态的应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。在Internet中所有的传输都是通过TCP/IP进行的。HTTP协议作为TCP/IP模型中应用层的协议也不例外。HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:
而大家都很清楚TCP/IP共分为四层:应用层、传输层、网络层、数据链路层; 为什么TCP/IP要分成四层呢?意思何在呢?其实主要原因是由于分层能够解耦,动态替换层内协议,不同层各司其责: 应用层:向用户提供应用服务时的通讯活动(ftp,dns,http) 传输层:网络连接中两台计算机的数据传输(tcp、udp) 网络层:处理网络上流动的数据包,通过怎样的传输路径把数据包传送给对方(ip) 数据链路层:与硬件相关的网卡、设备驱动等等
但是HTTP也有几个较为显著的缺点:
正是由于这几个显著的缺点存在,所以HTTPS应运而生。https俗称超文本传输安全协议。是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS是在HTTP的基础上加上一层安全层,用于数据加密、解密、身份认证,即
HTTP + 加密 + 认证 = HTTPS
说到加密,开发人员基本都不会陌生。我们平常开发中接触形形色色的加密算法,简单来说分为对称加密算法与非对称加密算法以及散列算法。算法的区别在哪呢?我们可以这么来理解三种算法的区别:
我们为什么需要加密?我们日常生活中登录密码或者各种隐私信息都需要进行加密保存防止信息泄露。那我们接下来来看看这三种算法类型分别有什么样的算法呢:
CA证书:CA证书CA证书内含服务端公钥与私钥,使用hash散列函数计算明文信息的信息摘要,然后采用CA证书内含的私钥对信息摘要进行加密最终生成签名。即:证书 = 公钥 + 签名 +申请者和颁发者的信息。客户端中因为在操作系统中就预置了CA的公钥,所以支持解密签名。
知道了上面这些基础知识,接下来我们一起了解HTTPS如何进行安全认证,首先主要有单向认证和双向认证两种认证方式:
单向认证 从上图可以看出,单向认证过程如下:
HTTPS双向认证 单向认证客户端只需要认证服务端,而在双向认证中服务端同样需要对客户端进行认证: 双向认证具体过程如下:
但是HTTPS即使号称超文本传输安全协议,也是很容易被抓包的,一般可以通过Charles、fildder等工具作为中间层,进行身份的伪装:对客户端伪装成服务端,对服务端伪装成客户端: 截获客户端的HTTPS请求,伪装成客户端去向服务端发送HTTPS请求 接受服务端返回,用自己的证书伪装成服务端向客户端发送数据内容。
具体过程如下图所示:
反抓包策略 那我们应该如何防止被抓包呢?可以使用SSL-Pinning技术来反抓包。因为被抓包主要是由于伪造了一个假的服务端证书给了客户端,音粗可以同时在客户端也保存一份服务端的证书,就可以知道数据来源的证书是不是真实服务端来源了。SSL-pinning有两种方式: 证书锁定(Certificate Pinning) 公钥锁定(Public Key Pinning)
证书锁定 证书锁定是SSL/TLS加密的额外保证手段。它会将服务器的证书公钥预先保存在客户端。在建立安全连接的过程中,客户端会将预置的公钥和接受的证书做比较。如果一致,就建立连接,否则就拒绝连接。在客户端设置证书只允许设置指定域名的证书,而不接受操作系统或浏览器内置的CA根证书对应的任何证书。
2.公钥锁定
HTTP公钥锁定是HTTPS网站防止攻击者CA机构错误签发的证书进行中间人攻击的一种安全机制,用于预防CA遭受入侵或其他会造成CA签发未授权证书的情况。采用公钥锁定时,网站会提供已授权公钥的哈希列表,指示客户端在后续通讯中只接受列表上的公钥。提取证书中的公钥并内置到客户端中,通过与服务器对比公钥值来验证连接的正确性。
HTTPS和HTTP的区别 https协议需要到ca申请证书,一般免费证书很少,需要交费。 http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。 http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。 http的连接很简单,是无状态的。 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
HTTPS解决的问题 防止第三方冒充服务器。 防止第三方拦截通信报文,窃取通信中请求报文、响应报文的内容。 防止第三方拦截通信报文,篡改报文内容。
欢迎关注我个人公众号:程序猿周先森
标签:指定 链路层 响应 play 替换 包括 加密 文档 网络协议
原文地址:https://www.cnblogs.com/niyueling/p/11561520.html