协议是指计算机通信网络中两台计算机必须遵守的规定或规则。超文本传输??协议(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说到加密,开发者基本都不陌生。在日常开发中,我们会接触到各种加密算法,简单分为对称加密算法、非对称加密算法和哈希算法。算法的区别在哪里?我们可以这样理解这三种算法的区别:对称加密算法:使用相同的密钥对数据进行加密和解密。这种加密方式的特点是速度非常快。非对称加密算法:用公钥加密的数据必须用私钥解密,用私钥加密的数据必须用公钥解密。这种加密方式的特点是速度慢,CPU开销大。哈希算法:没有秘钥,目前是无法逆向解密的。(暴力破解除外)为什么我们需要加密?在我们的日常生活中,需要对登录密码或各种隐私信息进行加密存储,以防止信息泄露。那么我们来看看这三种算法类型都有什么样的算法:对称加密算法:目前主流的算法有DES算法,3DES算法,AES算法非对称加密算法:目前主流的算法有RSA算法hash算法:目前,MD5和SHA-1算法主要用作主要的CA证书:CA证书中包含的密钥消息摘要被加密,最终生成签名。即:证书=公钥+签名+申请人和颁发者信息。由于CA的公钥是在操作系统中预置的,所以客户端支持解密和签名。了解了以上基础知识,我们就来了解一下HTTPS是如何进行安全认证的。一、认证方式有两种:单向认证和双向认证:单向认证从上图可以看出,单向认证流程如下:客户端发送SSL协议版本号,加密算法类型、随机数等信息发送给服务器。服务器向客户端返回SSL协议版本号、加密算法类型、随机数等信息,同时返回服务器的证书,即公钥证书。客户端使用服务器返回的信息来验证服务器的合法性,包括:证书是否过期颁发服务器证书的CA是否可靠返回的公钥是否可以正确解锁返回证书中的数字签名是否服务器证书上的域名与服务器的实际域名相匹配验证通过后,通信将继续,否则,通信客户端将被终止将其可以支持的对称加密方案发送给服务器,以供服务器使用选择。服务器在客户端提供的加密方案中选择加密级别最高的加密方式。服务器将选择的加密方案以明文形式返回给客户端。客户端收到服务器返回的加密方式后,会利用加密方式生成一个随机码,作为通信过程中对称加密的密钥,由服务器返回。服务端收到客户端返回的加密信息后,用自己的私钥解密,得到对称加密密钥。在接下来的会话中,服务器和客户端将使用这个密码进行对称加密,以保证通信过程中信息的安全。HTTPS双向认证One-wayauthentication客户端只需要对服务器进行认证,服务器也需要对客户端进行双向认证:双向认证的具体过程如下:客户端发送SSL协议版本号、加密算法类型、随机数等信息。服务器向客户端返回SSL协议版本号、加密算法类型、随机数等信息,同时返回服务器的证书,即公钥证书。客户端使用服务器返回的信息来验证服务器的合法性,包括:证书是否过期颁发服务器证书的CA是否可靠返回的公钥是否可以正确解锁返回证书中的数字签名是否服务器证书上的域名与服务器实际域名相符验证通过后,通信将继续,否则通信服务器终止要求客户端发送客户端证书,客户端将其发送给客户端自己的证书到服务器来验证客户端的证书。验证通过后,将获得客户端的公钥。客户端将自己能够支持的对称加密方案发送给服务器端供服务器端选择客户端提供的加密方案中加密程度最高的加密方式。加密方案使用之前得到的公钥进行加密,返回给客户端。客户端收到服务器返回的加密方案密钥。文后用自己的私钥解密得到具体的加密方式,然后生成加密方式的随机码,作为加密过程中的密钥,使用从服务器证书中得到的公钥进行加密,发送给服务端服务端收到客户端发送的消息后,使用自己的私钥进行解密,得到密钥进行对称加密。在接下来的会话中,服务器和客户端将使用这个密码进行对称加密,以保证通信过程中信息的安全。然而,即使HTTPS号称超文本传输??安全协议,也很容易被攻陷。一般可以使用Charles、fildder等工具作为中间层来伪装身份:客户端伪装成服务端,服务端伪装成客户端。:拦截客户端的HTTPS请求,冒充客户端向服务器发送HTTPS请求,接受服务器的返回,并使用自己的证书冒充服务器向客户端发送数据内容。具体流程如下图所示:反抓包策略那么我们应该如何防止被抓包呢?您可以使用SSL-Pinning技术来反捕获数据包。因为抓包主要是给客户端伪造了一个伪造的服务器证书,所以音游也可以同时在客户端保存一个服务器证书,这样就可以知道数据源的证书是否来自真正的服务器源.SSL-pinning有两种方法:证书固定(CertificatePinning)公钥固定(PublicKeyPinning)证书固定证书固定是SSL/TLS加密的一种额外保证方法。它会在客户端预先保存服务器的证书公钥。在建立安全连接的过程中,客户端会将预设的公钥与接受的证书进行比较。如果它们匹配,则建立连接,否则拒绝连接。在客户端设置证书只允许设置指定域名的证书,不接受操作系统或浏览器内置的CA根证书对应的任何证书。公钥锁定HTTP公钥锁定是HTTPS网站的一种安全机制,用于防止攻击者使用CA机构错误颁发的证书进行中间人攻击。通过公钥锁定,网站提供授权公钥的哈希列表,指示客户端在后续通信中仅接受列表中的那些公钥。提取证书中的公钥并内置到客户端中,通过与服务器端比较公钥值来验证连接的正确性。HTTPS和HTTP的区别HTTPS协议需要向CA申请证书。一般免费证书很少,需要付费。http是超文本传输??协议,信息以明文形式传输,https是安全的ssl加密传输协议。http和https使用完全不同的连接方式和不同的端口,前者是80,后者是443。http连接非常简单,无状态。HTTPS协议是由SSL+HTTP协议构建的可以进行加密传输和身份认证的网络协议,比http协议更安全。HTTPS解决的问题防止第三方冒充服务器。防止第三方截获通信消息,窃取通信中请求消息和响应消息的内容。防止第三方截获通讯消息,篡改消息内容。文章首发于公众号:程序员周先森。本平台不定期更新,喜欢我的文章,请关注我的微信公众号。本文由博客多发平台OpenWrite发布!
