HTTPS详解

2021-02-28  本文已影响0人  d卡普b

概述

超文本传输安全协议(HyperText Transfer Protocol Secure,缩写:HTTPS)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,利用SSL/TLS来加密数据包。其主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。

了解HTTPS,有助于我们定位和解决日常遇到的网路问题,对HTTPS流程的了解程度,也在一定程度上反映了一个开发人员的网络知识基本功。

加密与签名

Hash

「Hash算法」也被称为散列算法。「Hash算法」没有一个固定的公式,只要符合散列思想的算法都可以被称为是「Hash算法」。

通常无法通过数据的hash值还原出原始数据,不同数据的hash值不同,所以可以用「Hash算法」来校验完整性,检测数据是否完整或者是否有更改。

对称加密

加密与解密使用同样的密钥。

对称加密效率较高,被广泛应用于各种加密协议,然而在通讯前需要将密钥发送给对方,容易导致密钥泄漏。

非对称加密

非对称加密使用了一对密钥:公钥和私钥。私钥只能由一方保管,不能外泄,而公钥则可以发给任何请求者。通过公钥加密的数据只能由私钥解开。

相比对称加密而言,非对称加密是十分安全的,但是加密和解密效率却没有对称加密高。

数据签名

数据签名可以理解为:利用非对称加密中的私钥对「数据的 Hash 值」进行加密后的数据。

image
签名的验证者使用公钥对数据签名进行解密,并将解密结果与自己计算出的数据的 Hash 值进行比对,结果相同则证明数据完整、签名有效,否则,则认为数据无效。

image

在非对称加密中,公钥也能解开私钥加密的数据,然而由于公钥是公开的,所以不能使用私钥加密数据公钥解密的方式通讯,私钥加密被用作对数据进行数字签名,公钥来验证签名。

  • 加密过程:公钥加密,私钥解密;
  • 数字签名:私钥加密,公钥解密;

数字证书

数字证书用来证明公钥拥有者的身份。
数字证书中包含:拥有者的公钥、拥有者名称、证书颁发者信息、证书信息签名及有效期等


image

1、数字签名用来验证证书的是否有效,防止证书信息被篡改

2、证书颁发者指向证书颁发者的数字证书,同样需要验证,这也是为什么客户端需要下载可信任证书或者安装根证书的原因。

SSL/TSL

HTTPS 是基于 HTTP , 在 HTTP 下面提供了一个传输级的密码安全层。


image

握手图示

image

1) ClientHello

2)Server Hello

3) 证书校验

4) Client 握手结束通知

5)Server 握手结束通知

6) Client 开始HTTPS通讯

拓展

Charles抓包原理

当使用 Charles 抓包时,对服务器来说 Charles 就是客户端,对客户端来说 Charles 就是服务器。

首先,客户端需要信任 Charles 自建的证书。在此基础上客户端与 Charles 完成 HTTPS 握手,Charles 与服务器完成 HTTPS 握手。在通讯时,Charles 使用自己的私钥解密客户端的数据,然后将数据再使用服务的公钥加密转发给服务器,以此完成代理功能。

image

参考链接

超详细https握手与数字签名讲解

SSL/TLS协议运行机制的概述

HTTPS执行流程解析

浅谈Charles抓取HTTPS原理

上一篇下一篇

猜你喜欢

热点阅读