文章目录
为什么引入HTTPS?
由于HTTP协议在网络传输中是明文传输的,那么当传输一些机密的文件或着对钱的操作时,就会有泄密的风险,从而引入HTTPS来保证数据在网络传输中的安全。
基本概念
HTTPS 协议是 HyperText Transfer Protocol Secure(超文本传输安全协议) 的缩写,是一种通过计算机网络进行安全通信的传输协议。
HTTP 本身是不安全的,因为传输的数据未经加密,可能会被窃听或篡改,为了解决这个问题,引入了 HTTPS,即在 HTTP 上加入 SSL/TLS 协议,为数据传输提供了加密和身份验证。
HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包,HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。
HTTP 的 URL 是由 http:// 起始与默认使用端口 80 ,而 HTTPS 的 URL 则是由 https:// 起始与默认使用端口443。
加密的基本过程
我们将网络中要传输的还未加密的数据称为"明文",称加密的工具为"密钥",被加密后的数据称为"密文"。
在发送端传输数据之前,使用密钥对数据进行加密,当加密后的数据到接收端时,接收端再使用密钥对密文进行解密,拿到信息。
解密算法主要是分为对称加密 和非对称加密
非对称加密的安全性更高一些。
对称加密
对称加密 就是加密和解密使用同一把密钥:
这时,就会出现一个问题,每个服务器是给多个客户端服务的,一旦客户端的数量过多,那么服务器负载就会严重,此时又引入下面的做法:
每次在客户端和服务器进行通信时,客户端跟服务器要先约定好密钥,再进行通信,这样做就不必再服务器存入每一个客户端的密钥了。
这时,又又有一个问题,在客户端和服务器在沟通使用哪个密钥时,被黑客窃取到信息,那该怎么办呢?这时就引入了非对称加密
非对称加密
非对称加密就是加密和解密使用的密钥不是同一把。一个叫"公钥",一个叫"私钥",公钥和私钥之前是配对的,但是这个加密解密的过程非常慢,所以一不使用非对称加密,只是在协商密钥时使用。
这里的流程如下:
- 服务器生成私钥和公钥
- 服务器保存私钥,将公钥告知给客户端(所有人都能拿到公钥)
- 客户端使用公钥对协商使用哪个(对称加密)密钥的信息进行加密,传递给服务器
- 服务器在拿到信息后,使用私钥进行解密,获得信息,之后就使用协商的(对称加密)密钥来进行解密
但这个过程还是存在风险,这就是中间人攻击要讲解的内容了。
中间人攻击
如上
黑客面对客户端时,就充当服务器的角色
面对服务器时,就充当客户端的角色。
兵来将挡水来土掩,那么这个问题又该如何解决呢?
这时引入了证书
证书
服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书 ,数字证书⾥含有证书申请者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书⾥获取公钥就⾏了,证书就如⾝份证,证明服务端公钥的权威性
这个证书实际上是一个结构化的字符串,包含如下信息:
- 证书发布机构
- 证书有效期
- 公钥
- 证书拥有者
- 持有者网站的主域名
- 数字签名
这其中的数字签名是这些信息中最重要的一个。
数字签名是怎样得来的呢?
- 公证机构在颁布这个证书的时候会生成一对 "公钥"和"私钥"
- 对证书中的信息(发布机构、有效日期、公钥等)生成校验和
- 再用"校验和"和"私钥"进行非对称加密 生成数字签名
有了证书后,客户端和服务器的通信过程又发生了一些变动。
如何对证书进行检验呢???
- 针对证书的字段计算校验和。得到校验和1
- 针对数字签名 进行解密
前面已经讲过,数字签名是公证机构使用私钥进行加密的,这时解密就需要公证机构的公钥来解密了。
这里的公钥已经保存在操作系统中。(证书发布,操作系统就会将这个证书连同他的公钥一同存入到操作系统中)
拿到公钥后,对数字签名进行解密,得到校验和2 - 比对校验和1和校验和2,如果相等,就说明证书是真的,也就代表证书中的公钥是真的
- 拿到真的公钥来进行后续的操作。
以上就是本文所有内容,如果对你有帮助的话,点赞收藏支持一下吧!💞💞💞