为什么HTTPS是安全的

VSole2021-11-16 06:30:36

1. HTTP 协议

在谈论 HTTPS 协议之前,先来回顾一下 HTTP 协议的概念。

1.1 HTTP 协议介绍

HTTP 协议是一种基于文本的传输协议,它位于 OSI 网络模型中的应用层

HTTP 协议是通过客户端和服务器的请求应答来进行通讯,目前协议由之前的 RFC 2616 拆分成立六个单独的协议说明(RFC 7230、RFC 7231、RFC 7232、RFC 7233、RFC 7234、RFC 7235),通讯报文如下:

  • 请求
POST http://www.baidu.com HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Content-Length: 7
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36

wd=HTTP
  • 响应
HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Thu, 14 Feb 2019 07:23:49 GMT
Transfer-Encoding: chunked

...

1.2 HTTP 中间人攻击

HTTP 协议使用起来确实非常的方便,但是它存在一个致命的缺点:不安全

我们知道 HTTP 协议中的报文都是以明文的方式进行传输,不做任何加密,这样会导致什么问题呢?下面来举个例子:

  1. 小明在 JAVA 贴吧发帖,内容为我爱JAVA

  2. 被中间人进行攻击,内容修改为我爱PHP


  3. 小明被群嘲(手动狗头)

可以看到在 HTTP 传输过程中,中间人能看到并且修改 HTTP 通讯中所有的请求和响应内容,所以使用 HTTP 是非常的不安全的。

1.3 防止中间人攻击

这个时候可能就有人想到了,既然内容是明文那我使用对称加密的方式将报文加密这样中间人不就看不到明文了吗,于是如下改造:

  1. 双方约定加密方式



  2. 使用 AES 加密报文


这样看似中间人获取不到明文信息了,但其实在通讯过程中还是会以明文的方式暴露加密方式和秘钥,如果第一次通信被拦截到了,那么秘钥就会泄露给中间人,中间人仍然可以解密后续的通信:

那么对于这种情况,我们肯定就会考虑能不能将秘钥进行加密不让中间人看到呢?答案是有的,采用非对称加密,我们可以通过 RSA 算法来实现。

在约定加密方式的时候由服务器生成一对公私钥,服务器将公钥返回给客户端,客户端本地生成一串秘钥(AES_KEY)用于对称加密,并通过服务器发送的公钥进行加密得到(AES_KEY_SECRET),之后返回给服务端,服务端通过私钥将客户端发送的AES_KEY_SECRET进行解密得到AEK_KEY,最后客户端和服务器通过AEK_KEY进行报文的加密通讯,改造如下:

可以看到这种情况下中间人是窃取不到用于AES加密的秘钥,所以对于后续的通讯是肯定无法进行解密了,那么这样做就是绝对安全了吗?

所谓道高一尺魔高一丈,中间人为了对应这种加密方法又想出了一个新的破解方案,既然拿不到AES_KEY,那我就把自己模拟成一个客户端和服务器端的结合体,在用户->中间人的过程中中间人模拟服务器的行为,这样可以拿到用户请求的明文,在中间人->服务器的过程中中间人模拟客户端行为,这样可以拿到服务器响应的明文,以此来进行中间人攻击:


这一次通信再次被中间人截获,中间人自己也伪造了一对公私钥,并将公钥发送给用户以此来窃取客户端生成的AES_KEY,在拿到AES_KEY之后就能轻松的进行解密了。

中间人这样为所欲为,就没有办法制裁下吗,当然有啊,接下来我们看看 HTTPS 是怎么解决通讯安全问题的。

2. HTTPS 协议

2.1 HTTPS 简介

HTTPS 其实是SSL+HTTP的简称,当然现在SSL基本已经被TLS取代了,不过接下来我们还是统一以SSL作为简称,SSL协议其实不止是应用在HTTP协议上,还在应用在各种应用层协议上,例如:FTPWebSocket

其实SSL协议大致就和上一节非对称加密的性质一样,握手的过程中主要也是为了交换秘钥,然后再通讯过程中使用对称加密进行通讯,大概流程如下:


这里我只是画了个示意图,其实真正的 SSL 握手会比这个复杂的多,但是性质还是差不多,而且我们这里需要关注的重点在于 HTTPS 是如何防止中间人攻击的。

通过上图可以观察到,服务器是通过 SSL 证书来传递公钥,客户端会对 SSL 证书进行验证,其中证书认证体系就是确保SSL安全的关键,接下来我们就来讲解下CA 认证体系,看看它是如何防止中间人攻击的。

2.2 CA 认证体系

上一节我们看到客户端需要对服务器返回的 SSL 证书进行校验,那么客户端是如何校验服务器 SSL 证书的安全性呢。

  • 权威认证机构
  • 在 CA 认证体系中,所有的证书都是由权威机构来颁发,而权威机构的 CA 证书都是已经在操作系统中内置的,我们把这些证书称之为CA根证书
  • 签发证书
  • 我们的应用服务器如果想要使用 SSL 的话,需要通过权威认证机构来签发CA证书,我们将服务器生成的公钥和站点相关信息发送给CA签发机构,再由CA签发机构通过服务器发送的相关信息用CA签发机构进行加签,由此得到我们应用服务器的证书,证书会对应的生成证书内容的签名,并将该签名使用CA签发机构的私钥进行加密得到证书指纹,并且与上级证书生成关系链。
  • 这里我们把百度的证书下载下来看看:

可以看到百度是受信于GlobalSign G2,同样的GlobalSign G2是受信于GlobalSign R1,当客户端(浏览器)做证书校验时,会一级一级的向上做检查,直到最后的根证书,如果没有问题说明服务器证书是可以被信任的。

  • 如何验证服务器证书
  • 那么客户端(浏览器)又是如何对服务器证书做校验的呢,首先会通过层级关系找到上级证书,通过上级证书里的公钥来对服务器的证书指纹进行解密得到签名(sign1),再通过签名算法算出服务器证书的签名(sign2),通过对比sign1sign2,如果相等就说明证书是没有被篡改也不是伪造的。

这里有趣的是,证书校验用的 RSA 是通过私钥加密证书签名,公钥解密来巧妙的验证证书有效性。

这样通过证书的认证体系,我们就可以避免了中间人窃取AES_KEY从而发起拦截和修改 HTTP 通讯的报文。

总结

首先先通过对 HTTP 中间人攻击的来了解到 HTTP 为什么是不安全的,然后再从安全攻防的技术演变一直到 HTTPS 的原理概括,希望能让大家对 HTTPS 有个更深刻的了解。

https安全证书
本作品采用《CC 协议》,转载必须注明作者和本文链接
在当今互联网时代,许多组织和个人都需要同时管理多个网站,这可能包括公司内部网站、在线商店、博客等。为了确保这些网站的安全性和数据保护,选择适合管理多个网站的SSL证书至关重要。今天小编就为大家详细介绍下,不同情况下多个网站应该选择哪种SSL证书。一、拥有多个同级子域名对于需要管理多个子域名网站的情况,通配符SSL证书是一个很好的选择。通配符SSL证书为主域名及其所有二级子域名提供加密和安全连接。例
网站的安全性与信任度对于用户来说至关重要,它决定着用户是否继续浏览以及是否与您开展业务。SSL证书则是确保网站能够通过HTTPS加密安全传输数据的基础,可确保网站的安全可信。部署了SSL证书的网站打开后,在浏览器地址栏处会有安全锁标志。而常见的SSL证书类型有OV、DV,那么,应该如何查看网站部署的SSL证书是OV还是DV呢?下面我们来详细介绍。 1、输入域名(网址)在浏览器的地址栏处输
当下,互联网技术不断发展的同时,网络攻击风险也在不断增加,加强对您的网站和客户的保护变得比以往任何时候都更加重要。网站SSL证书可以成为帮助您保护网站和客户数据的宝贵工具。那么什么是网站SSL证书呢?SSL证书的重要性又体现在哪里呢?什么是网站SSL证书?网站SSL证书是一个数字证书,用于认证网站的身份并启用加密连接。SSL代表安全套接字层,这是一个安全协议,可在 Web 服务器和 Web 浏览器
一直以来,中小型企业选购服务器证书时,在确认SSL证书带给网站HTTPS安全加密及身份认证的同时,也会考虑其性价比以及其他附加功能。此外,锐安信SSL证书支持国内外OCSP验签, HTTPS验证查询效率高,网站访问速度快, HTTPS服务器访问更具有稳定性、安全可控性。综上,锐安信SSL证书作为国产SSL证书品牌,安全优质却又价格亲民,因而自上市以来备受中小企业欢迎,目前已经成为市场上众多中小企业欣赏的品牌。
信息化时代,互联网技术飞速发展的同时,数据泄露规模也在不断扩大。近日,苹果公司发布数据泄露报告,表明2023年全球数据泄漏规模将创下历史新高,前九个月已有3.6亿人的敏感数据遭泄漏,比之2022年全年高出20%。数十亿记录遭到泄露根据报告,2021和2022年,全球泄露了惊人的26亿条个人记录,仅2022年一年就泄漏了约15亿条个人记录。2023年将创下新的数据泄漏记录,因为仅2023年前9个月的
在如今的互联网时代,网络安全变得愈发重要。为了保障网站内数据的安全,许多网站都开始使用HTTPS协议来进行数据传输。而谷歌、百度等搜索巨擘启用全站HTTPS加密服务,更是掀起了网站HTTPS加密的浪潮。那么申请HTTPS证书都需要什么?该如何申请呢?下文将为你详细解答,一起来看看吧。 HTTPS证书如何申请?目前,企业一般是选择证书机构来进行证书申请,这主要是因为专业的服务和技术团队会使
自上海疫情发生以来,许多企业应防疫要求而居家办公,导致部分企业无法正常提交SSL证书的申请、续费流程。为帮助企业网站的安全运行,上海锐成特此推出“锐安信SSL证书免费送”的限时活动,全力保护网站以及消费者的数据安全,避免证书过期给企业带来不安全风险及损失。
在互联网上,我们在访问常见的社交、购物、银行等网站时,经常会看到这些网站是通过https访问的,而要实现https访问,就需要用到https证书。那么你知道https证书是什么?https证书有什么作用?又该怎么申请https证书吗?本文内容就将详细介绍。https证书是什么?https证书,也就是我们常说的SSL证书,它由受信任的数字证书颁发机构CA在验证服务器身份后颁发,是一种用于保护网络传输
2018年7月起,Chrome浏览器的地址栏把一切HTTP标明为不安全网站,这一标准已在主流浏览器中实行。为了避免以上情况的发生,企业应及时为网站部署SSL证书。且根据我国等保2.0的规定,信息传输要进行加密,如果单位网站要求达到等保2.0的网站,安装SSL证书就是必须的了。一些网站达不到等级保护要求而出现安全事故也要被处罚。
客户端通过服务端的公钥对私钥加密传给服务端的时候,服务端如何辨别不是黑客使用服务端公钥加密的自己的私钥?
VSole
网络安全专家