您当前的位置:首页 > 电脑百科 > 安全防护 > 服务器/网站

从HTTP到HTTPS,原来这么简单

时间:2020-11-12 13:49:18  来源:  作者:

一、HTTP Begin

1、什么是 HTTP

HTTP 是基于文本传输的协议,它位于 OSI 七层模型的应用层(Application) ,HTTP 是通过客户端向服务器发送请求,服务器响应请求来进行通讯,截止到目前位置 HTTP 协议分别由 6 个独立的协议说明组成,这 6 个协议说明分别是 RFC 7230 、 RFC 7231 、 RFC 7232 、 RFC 7233 、 RFC 7234 、 RFC 7235 。

从HTTP到HTTPS,原来这么简单

 

说到 HTTP 就不得不说通讯报文,下面我们来看看 HTTP 通讯报文。通讯报文分为 请求报文 和 响应报文 。


①请求报文


HTTP请求报文通常由请求行(request line)、请求头部(header)、空行和请求数据4个部分组,如下图所示:

从HTTP到HTTPS,原来这么简单

 

请求行包含请求方法、URL 和 HTTP 协议版本三个字段组成,在这里需要说的是 请求方法可以实 GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT,但是常见的经常用到的就是 GET、POST、DELETE和 PUT。

请求头部由大量键值对组成,请求头部的数据都是向服务器告知客户端的信息,比较常见的请求头有 User-Agent 浏览器类型,Accept 客户端可识别的内容类型列表,Host 请求的主机名。接下来是一个空行,它主要用来通知服务器从当前行开始往下就不再是请求头了。

请求数据主要是在 POST 和 PUT 方法中使用,用来向服务器提交客户端的表单信息,一般需要配合着 Content-Type和Content-Length 使用。

②响应报文

响应报文也是由三部分组成,状态行、消息报头和响应正文。状态行用来告知客户端所请求资源的情况,状态行由 HTTP 版本、服务器回发响应状态码和状态码文本描述组成。这里要说一下响应状态码,状态码类型如下表所示:

从HTTP到HTTPS,原来这么简单

 

上表看着响应状态码很多,但是大部分在实际运用中很少遇到,经常遇到的状态码一共 7 中,如下表所示:

从HTTP到HTTPS,原来这么简单

 

2、HTTP 致命缺点

HTTP 有一个致命的缺点,就是 HTTP 的报文都是以明文的方式进行传输,这样就会导致中间人攻击问题。什么是中间人攻击了,下面我们通过图文的形式讲一下。


A 在客户端向服务器发送了一句话“我今天很好”,这时在数据还没有到达服务器的时候被 B 拦截到,B 将发送的内容改为“我昨天很好”并发送给服务器,最后服务器接收到的信息就是“我昨天很好”而不是“我今天很好”。

在这里 B 就是中间人,B 所执行的所有操作就叫做中间人攻击,一图胜千言我们来看图。

从HTTP到HTTPS,原来这么简单

 

3、HTTP 预防致命缺点手段

要想预防中间人攻击我们就需要对发送的报文信息进行加密处理,一般来说我们会采用两种加密手段来预防中间人攻击:对称加密和非对称加密。


①对称加密


首先 A 发送一条信息告诉服务器我要和你通讯了,服务器收到这条信息后响应一条信息告诉 A 的加密方式(例如 AES 加密)和密钥,最后 A 用和服务器协商好的加密方式对信息进行加密并发送,服务器收到信息后利用密钥进行解密即可。

从HTTP到HTTPS,原来这么简单

 


从HTTP到HTTPS,原来这么简单

 

通过上图看出点什么没?发送的内容虽然已经加密了,但是加密方式和密钥依然是明文,中间人如果拦截到第一次通信的话,它就可以拿着拦截到的加密方式和密钥就可以对后面的通信进行解密,修改内容后再以同样的加密方式和密钥进行加密后发送个服务器。

从HTTP到HTTPS,原来这么简单

 


从HTTP到HTTPS,原来这么简单

 

②非对称加密


针对前面所说的情况我们可以使用非对称加密对密钥进行加密处理。同样首先 A 发送一条信息告诉服务器我要和你通讯了,服务器收到这条信息后先利用非对称加密(例如RSA)生成一个公钥和一个私钥,然后服务器将公钥发发送给 A ,A 在本地生成一个密钥并利用服务器发回的公钥进行加密,完成后发送给服务器,服务器收到后利用私钥进行解密得到对称加密的密钥,最后双方利用约定好的加密方式和密钥进行通信。

从HTTP到HTTPS,原来这么简单

 

到目前为止看起来不错密钥和信息都加密了,应该就没问题了吧。真的是这样吗,如果真的是这样的话 HTTPS 就没有出现的必要了。

既然密钥都加密了,那么中间人在拦截到第一次通信时可以拿到服务器发给客户端的加密方式和公钥,然后自己生成一个私钥和一个公钥,并将拦截到的服务器发来的公钥替换成自己生成的公钥后发送给客户端,这时客户端加密 AES 密钥的公钥就是中间人的了。

客户端对 AES 密钥加密后发送给服务器,中间人再次拦截并利用自己的私钥解析密文得到AES 密钥,然后使用服务器的公钥对 AES 密钥加密并发送给服务器。最后在客户端和服务器的整个通讯期间中间人就可以用接获到 AES 密钥对信息解密并修改。

从HTTP到HTTPS,原来这么简单

 

到这里一定会由同学问,这两种方法都无法完全避免中间人攻击,还有其他的办法吗?下面我们伟大的 HTTPS 就要登场了,它可以完全避免中间人攻击。

二、HTTPS End

1.什么是 HTTPS


HTTPS 就是 HTTP 和 TLS 的简称,以前的 HTTPS 使用的是 SSL ,现在的 HTTPS 使用的是 SSL 。TLS 整体上来说和非对称加密是一样的,主要是对 AES 密钥加密的。

简单来说就是 A 发送一条信息给服务器告诉服务器我要和你通信,然后服务器返回 TLS/SSL 证数,客户端在收到证书后校验证书的有效性,如果证书有效就生成生成 AES 密钥并用证书中的公钥加密,然后发送给服务器。服务器确认收到后,就可以利用 AES 密钥进行加密通信了。

从HTTP到HTTPS,原来这么简单

 

2.关于 CA 认证体系


CA 认证体系是 HTTPS 防止中间人攻击的核心,客户端需要对服务器发来的证书进行安全性校验。那么客户端是怎么校验证书的安全性呢?下面我们来讲解一下。

证书都是由权威的认证机构颁发的,并且这些认证机构办法的证书目前已经内置到了操作系统中(windows 是这样,其他的操作系统不慎了解),这些证书被称为 CA 根证书。

当我们的服务器需要使用 HTTPS 的时候,就需要将服务器生成的公钥和网站相关信息发给权威认证机构,然后权威认证机构通过服务器发送的相关信息用进行加签,由此得到了服务器证书,这个证书对应的生成证书内容的签名,并将该这个签名使用权威认证机构的私钥进行加密得到证书指纹,并且和上级证书生成关系链(上级证书最后都是 CA 根证书)。

当客户端收到服务器发来的证书后,首先会通过层级关系找到上级证书,然后利用上级证书里的公钥解密服务器证书的证书指纹,解密后得到签名。

然后通过签名算法算出服务器证书的签名,并对比两个签名是否一样,一样就说明服务器发来的证书是不存在问题的。

这里证书校验用的 RSA 是通过私钥加密证书签名,公钥解密来巧妙的验证证书有效性的。通过 CA 认证体系就可以避免了中间人窃取 AES 密钥并发起拦截和修改 HTTP 通讯的报文。

三、总结

这篇文章唠唠叨叨的讲了这么多关于 HTTP 和 HTTPS 的知识,看似很基础其实在很多时候我们发出去或接受到的数据不准确其实就是因为中间人攻击造成的,因此我们在开发部署网站的时候应该尽可能的使用 HTTPS 。

  • 作者:朱钢,笔名喵叔
  • 简介:.NET 高级开发人员,2019 年度博客之星 20 强,长期从事电子政务系统和AI客服系统的设计与开发,目前就职于国内某 BIM 大厂从事招投标软件的开发。
  • 编辑:陶家龙
  • 征稿:有投稿、寻求报道意向技术人请私信小编


Tags:HTTPS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
1. 前言本文主要讲解如何在Linux上使用tinyproxy搭建HTTP/HTTPS代理器。tinyproxy是一个HTTP/HTTPS代理。它是轻量级的、快速的、非常容易配置的,而且是一个开源的代理服务。...【详细内容】
2021-12-08  Tags: HTTPS  点击:(16)  评论:(0)  加入收藏
由于https 使用了 TLS/SSL 加密条件,我们无法直接在wireshark的中读取到数据内容,我们先看一下正常的http包的内容。可以直接读取到http的header 和body。 但如果是https 则不...【详细内容】
2021-12-01  Tags: HTTPS  点击:(29)  评论:(0)  加入收藏
这段时间毕竟也是 “金九银十” 的面试的黄金季节,阿粉当然也想去面试,但是因为自身受限,所以只能采访一下出去面试的同学们都问了什么内容,其中有一个,阿粉觉得有必要给大家分享...【详细内容】
2021-11-05  Tags: HTTPS  点击:(45)  评论:(0)  加入收藏
自互联网出现以来,超文本传输协议http协议被广泛用于在Web浏览器和网站服务器之间传递信息,但随着互联网的发展,另一种协议——https出现,并与http一同服务于这个互联...【详细内容】
2021-10-20  Tags: HTTPS  点击:(44)  评论:(0)  加入收藏
背景最近做微信小程序开发比较多,大家知道线上微信小程序为了安全起见,要求后端通信协议必须是HTTPS,这就要求需要安装证书。为了测试预发布线上环境,特地买了个最便宜的域名,为...【详细内容】
2021-09-14  Tags: HTTPS  点击:(124)  评论:(0)  加入收藏
随着互联网安全越来越被重视,几乎所有的大网站都已经默认启用了https协议,浏览器输入http网址也会自动跳转到https,比如百度、腾讯、搜狗、谷歌等等。简单来说就是https协议数...【详细内容】
2021-09-06  Tags: HTTPS  点击:(76)  评论:(0)  加入收藏
为什么要优化 Ngin HTTPS 延迟Nginx 常作为最常见的服务器,常被用作负载均衡 (Load Balancer)、反向代理 (Reverse Proxy),以及网关 (Gateway) 等等。一个配置得当的 Nginx 服...【详细内容】
2021-08-11  Tags: HTTPS  点击:(53)  评论:(0)  加入收藏
我们日常用https访问网站的时候,和网站交互的数据是加密的,所用的协议就是SSL/TLS。所以即使我们截获了这些数据包,我们也不能看到加密的内容。比如我们随便打开百度的网址,用wi...【详细内容】
2021-07-16  Tags: HTTPS  点击:(127)  评论:(0)  加入收藏
1. 实验说明:前面的章节我们已经简单学习了windows server2019上如何搭建web服务器的,有的同学可能在上网的过程中会发现有些域名是使用的http访问而有的域名则是使用https加...【详细内容】
2021-07-07  Tags: HTTPS  点击:(147)  评论:(0)  加入收藏
说明最近项目上遇到一些https的问题,需要在tomcat里面测试一下如何开启https协议访问网站,在网上查了一些资料,自己也试了很多次,终于成功搞定了,下面跟大家分享一下我的一点经验...【详细内容】
2021-04-20  Tags: HTTPS  点击:(162)  评论:(0)  加入收藏
▌简易百科推荐
在最近的一波攻击中,黑客利用多个插件中未修补的漏洞攻击了 160 万个 WordPress 网站。 易受攻击的插件对 WordPress 网站产生了的巨大攻击数据。 Wordfence 最近发现 WordPr...【详细内容】
2021-12-16  蚁安    Tags:WordPress   点击:(8)  评论:(0)  加入收藏
事件起因从安全分析系统里面发现一条带有病毒的下载,然后针对这条记录展开了一系列的分析分析过程1.登录到被感染服务器,查看系统状况,hadoop 这个用户在 2020/6/18 20:32 从这...【详细内容】
2021-11-23  Z2990Lig    Tags:SSH   点击:(32)  评论:(0)  加入收藏
1、除了服务器需要用的一些正规软件,其它都不要安装。2、在用户中把administrator改名,这样做的目的是即使对方暴破了我们的密码用户名也不容易猜住,相当于又加了一道关卡。...【详细内容】
2021-11-01  IT小哥吧    Tags:服务器   点击:(37)  评论:(0)  加入收藏
账户安全(1)更名administrator本地用户并禁用guest账户步骤:点击“开始”,找到“管理工具”,点击里面的“计算机管理”,找到“本地用户和组” (2)设定账户锁定策略尝试5次失败...【详细内容】
2021-10-12  Kali与编程  今日头条  Tags:Windows主机   点击:(62)  评论:(0)  加入收藏
本文主要介绍以Microsoft的Windows Server 2019 ,版本:Datacenter(Domain Controller)安全加固保护.企业随着规模不断扩大,业务增多,信息安全建设是企业里一条只有重点没有终点...【详细内容】
2021-09-17  Vireshark    Tags:服务器安全   点击:(64)  评论:(0)  加入收藏
目录常见共享命令IPC$IPC$的利用条件1:开启了139、445端口2:目标主机开启了IPC$共享3:IPC连接报错IPC空连接空连接可以做什么?(毫无作用)IPC$非空连接IPC$非空连接可以做什么?di...【详细内容】
2021-09-16  网络说安全    Tags:系统安全   点击:(86)  评论:(0)  加入收藏
昨天一个老哥找到我,说他的服务器这几天一直被CC攻击,问我这边有没有什么解决的方法? 近年来,网络攻击事件越来越频繁,最常见的就是CC攻击和DDOS攻击,主要的区别就是针对的对象不...【详细内容】
2021-09-10  小蚁GDRAGON    Tags:cc攻击   点击:(58)  评论:(0)  加入收藏
网站页面上的登录操作,通常都是输入帐号密码,传输至网站后台验证。在网站页面、数据传输中,通过技术手段,都可以得到用户输入的信息,并可以修改,从而发起网络攻击。典型的如:使用自...【详细内容】
2021-08-30  修丹道的程序猿    Tags:登录方式   点击:(62)  评论:(0)  加入收藏
网络安全研究人员披露了一类影响主要 DNS 即服务 (DNSaaS) 提供商的新漏洞,这些漏洞可能允许攻击者从企业网络中窃取敏感信息。基础设施安全公司 Wiz 的研究人员 Shir Tamar...【详细内容】
2021-08-12  零日时代    Tags:漏洞   点击:(66)  评论:(0)  加入收藏
001暴力破解1. 指定用户名爆破密码传统型爆破思路,用户名可以通过猜测或者信息收集获得。猜测:admin、网站域名等信息收集:新闻发布人、whoami等2. 指定密码爆破用户名如果是后...【详细内容】
2021-07-23  KaliMa  今日头条  Tags:登陆框   点击:(85)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条