HTTPs 和 Http

2019-11-11  本文已影响0人  MikeShine

写在前面

关于 HTTPs 和 HTTP 的区别,好像还是挺常问的。我只知道HTTPs 是 加密版的 HTTP,需要证书啥的。今天就来看一下,HTTPs具体的知识。


1. 基本概念

Https 实际上是在Http的基础上加上了 SSL 保护壳,信息的加密过程就是在 SSL 中完成的。
如果我们去抓包,就会看到,Http 的包是明文,同时也存在被劫持、篡改等风险。而 https采用了加密传输,避免了这些问题。 这里的加密技术分为两种:对称加密、非对称加密。

对称加密

就是说 两端都用同样的秘钥来对信息进行加密解密操作。如下图,A/B两端都使用秘钥 S。

对称加密
实际上,在服务器端,有多种秘钥,其和每个客户端在进行通信之前,都要协商其采用的秘钥。如下图。
秘钥协商过程
但是这个秘钥协商的信息是没有加密的。为了解决这个问题,就出现了 非对称加密算法
非对称加密

私钥加密后的密文,只要是公钥都可以解密;但是反过来,公钥加密后的密文,只有私钥可以解密,私钥只有一个人有,公钥可以发给所有人。

非对称加密
如上图来说,服务器向客户端发信息是不安全的,因为公钥大家都可以获取;但是客户端向服务器发信息是安全的,因为私钥只有服务器有。这样一来,秘钥协商过程的保密性得到了保障。

总结一下,https 是即对称加密和非对称加密与一体的加密过程

安全的获取公钥

client 获取公钥的时候,最直接的方法就是服务器将公钥发送个每一个 client 用户,但是这个过程中其实也有被 MIM 攻击的风险。如下图


公钥劫持

于是如何安全的获取公钥就是一个要解决的问题了。这时候就要使用:SSL证书(需要购买)和 CA机构。

SSL证书
如上图,在 ② 步中,服务器向客户端发送了一个 SSL 证书,这个证书中包含有证书的颁发机构、有效期、公钥、证书持有者、签名等。 这里通过 第三方的校验保证了身份的合法性,解决了公钥获取的安全性(通过这个 SSL证书验证的公钥一定是安全的公钥,不会是被篡改的假公钥)。
之后在浏览器端,将在操作系统中内置受信任的证书颁发机构CA,与 SSL的CA对比,看是否是合法的机构颁发的公钥。如果是合法的,还会对签名做对比。签名也对,这时候才会使用这个公钥。

总结一下, Https 要使得c/s之间的通信过程安全,必须使用对称加密算法。但是对称加密算法中,需要协商加密算法,该过程需要使用非对称加密算法来保证安全性。这个时候,公钥的获取成为了可能出问题的地方,于是需要通过 使用数字证书签发机构颁发的证书来保证 公钥获取的安全。

HTTPs 工作原理

在客户端想要与服务器建立一个 HTTPs通信时,需要有下面几个步骤。

  1. 客户端 使用 https 的 URL访问 Web 服务器,要求与 Web 服务器建立SSL连接。
  2. 服务器收到客户端请求后,发送一份 CA证书(证书中是包含秘钥的)给客户端,
  3. 客户端收到证书,做验证,确认证书中的公钥是服务器发来的合法的。
  4. 客户端生成一个 会话秘钥,用证书中的公钥对这个 会话秘钥进行加密,发送给服务器
  5. 服务器用自己的私钥 解密出 会话秘钥
  6. 二者通过会话秘钥进行加密通信

HTTP 和 HTTPs 的区别

  1. Https 是需要 CA证书的,一般要收费
  2. Http 是明文传输,Https 是具有安全性的SSL 加密传输
  3. 二者使用 完全不同的连接方式,端口也不同,http 80 / https 443
  4. http 简单无状态,HTTPs = http + SSL,安全
上一篇 下一篇

猜你喜欢

热点阅读