嚼一嚼HTTPS

嚼一嚼HTTPS

1、什么是HTTP

以下内容来自《How Tomcat Works》

HTTP 是一种协议,允许 web 服务器和浏览器通过互联网进行来发送和接受数据。它是一种
请求和响应协议。客户端请求一个文件而服务器响应请求。HTTP 使用可靠的 TCP 连接,TCP 默认使用 80 端口。

一个 HTTP 请求包括三个组成部分:

  • 方法—统一资源标识符(URI)—协议/版本:如 POST /examples/default.jsp HTTP/1.1
  • 请求的头部:如 Content-Type: application/x-www-form-urlencoded
  • 主体内容:如 lastName=Franks&firstName=Michael

一个 HTTP 响应也包括三个组成部分:

  • 方法—统一资源标识符(URI)—协议/版本:如 HTTP/1.1 200 OK
  • 响应的头部:如 Content-Type: text/html
  • 主体内容:如 <html><title>hello world</title></html>

2、为什么需要HTTPS

以下内容来自《图解HTTP》

HTTP与1990年问世,那时HTTP并没有作为正式的标准被建立,因此被称为HTTP/0.9,含有HTTP1.0版本之前的意思。HTTP在1996年的5月作为正式版本公布,被命名为HTTP/1.0,1997年1月公布的HTTP/1.1是后来主流的HTTP协议版本。虽然HTTP一直驻足不前,但是时至今日,HTTP/1.1仍是互联网中使用最广泛的协议之一。

虽然使用广泛,但是HTTP的缺点也很多:

  • 通信使用明文(不加密),内容可能会被窃听
  • 不验证通信方的身份,因此有可能遭遇伪装
  • 无法证明报文的完整性,所以有可能已遭篡改

为了解决上述问题,在HTTP的基础上,加上加密处理、证书认证以及完整性保护,形成了现在的HTTPS。

3、HTTPS的使用介绍

假设我们现在有客户端(C端)和服务端(S端),下面介绍C端和S端使用HTTPS通信的流程。

  • S端将自己的公钥 sPubKey 发送给 CA 机构,CA 用自己的私钥 cPriKey 对 S 端的信息(包括站点信息和sPubKey)进行加密,形成S端的证书
  • CA 机构是一些大机构,被浏览器开发商所承认,浏览器开发商会将 cPubKey 内置到自己开发的浏览器中
  • 当 C 端与 S 端通信的时候,第一步 C 端是请求 S 端的公钥,S 端将证书返回给 C 端
  • C 端拿到 CA 机构 cPriKey 加密过的证书,用浏览器内置的 cPubKey 解密,取得 S 端的 sPubKey
  • C 端用公钥 sPubKey 加密对称加密秘钥 cKey,发送给 S 端,S 端收到后使用私钥 sPriKey 解密,取得 cKey
  • 后续 C 端和 S 端通信,都通过 cKey 进行对称加密

4、概念解释

其实看到 3 基本就能回忆起 HTTPS 请求到底是怎么回事,但是对于之前完全不了解 HTTPS 的人来说,可能有些不明白的地方,下面就简单讲述一下。

HTTPS 涉及的加密有两种,一种非对称加密,一种对称加密:

  • 非对称加密:加解密使用不同秘钥,公钥公开,但是公钥无法反推私钥,所以更安全。但是加解密耗时更长,适合对少量数据使用
  • 对称加密:加解密使用同样的秘钥,秘钥被截获则传输的信息也将被破解,安全性较低。但是速度更快,适合加密内容

HTTPS 将两者结合起来使用,先使用更为安全的非对称加密(RSA)对随机生成的对称加密(AES)秘钥进行加密,传递给对方以后,后续内容传输使用对称加解密。既保证了效率,也提高了安全性。

  • 非对称加密传输秘钥,安全性高
  • 对称加密的秘钥不易被截获,且是随机生成的,不易破解

既然上述两种加密方式已经可以满足 HTTPS 了,为什么还需要 CA 机构呢?

因为如果最开始 C 端获取 S 端的公钥 sPubKey 时,中途被拦截,传回来的是 xxxPubKey,那么后续的通信都将被 xxx 端截获。故保证第一次获取的公钥确实是来自 S 端,尤为重要。

于是便有了浏览器内置 CA 公钥 cPubKey,此时是可信的。CA 公钥解密证书,获取 S 端的公钥 sPubKey,此时也可信。但是你可能会问,如果 CA 公钥不可信了怎么办?这就相当于国家给你开假身份证,那就没办法了,这种事出现过一次,曾经有一家 CA 机构被黑客入侵。这种事我只能说,就当做没发生过吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值