HTTPS网络通信协议基础

目录

前言:

1.HTTPS协议理论

1.1协议概念

1.2加密

2.两类加密

2.1对称加密

2.2非对称加密

3.引入"证书"

3.1证书概念

3.2数据证书内容

3.3数据签名

4.总结


前言:

了解完HTTP协议后,HTTPS协议是HTTP协议的升级加强版,在目前的日常开发中,以使用HTPS协议为主,HTTPS协议对于HTTP协议有很多安全优点。

本节主要介绍HTTPS协议的基本内容。
序列:HTTP/HTTPS - 005


1.HTTPS协议理论

1.1协议概念

HTTPS也是一个应用层协议 ,是在HTTP协议的基础上引入了一个加密层。

HTTP协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。在互联网上,明文传输是比较危险的事情!!!

HTTPS就是在HTTP的基础上进行了加密,进一步的来保证用户的信息安全。

HTTP当前很少有直接使用的了,一般都是使用HTTP的加强版HTTPS(加密)。

1.2加密

加密就是把 明文(要传输的信息)进行一系列变换,生成 密文

解密就是把 密文 再进行一系列变换,还原成 明文。

  • 明文+密钥=>密文;
  • 密文+密钥=>明文;

在这个加密和解密的过程中,往往需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为 密钥。

加密解密到如今已经发展成一个独立的学科:密码学。

2.两类加密

既然要保证数据安全,就需要进行"加密"。

网络传输中不再直接传输明文了,而是加密之后的"密文"。

加密的方式有很多,但是整体可以分成两大类:对称加密非对称加密。

2.1对称加密

对称加密其实就是通过同一个"密钥",把明文加密成密文,并且也能把密文解密成明文。

加密和解密,使用的密钥是同一个密钥。

Key表示密钥:

  • 明文+Key=>密文;
  • 密文+Key=>明文;

2.2非对称加密

非对称加密要用到两个密钥,一个叫做"公钥",一个叫做"私钥"公钥和私钥是配对的,最大的缺点就是运算速度非常慢,比对称加密要慢很多。

  • 通过公钥对明文加密,变成密文
  • 通过私钥对密文解密,变成明文

也可以反着用

  • 通过私钥对明文加密,变成密文
  • 通过公钥对密文解密,变成明文

3.引入"证书"

3.1证书概念

服务端在使用HTTPS前,需要向CA机构申领一份数字证书,数字证书里含有证书申请者信息、公钥信息等。

服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务端公钥的权威性。

3.2数据证书内容

这个 证书 可以理解成是一个结构化的字符串,里面包含了以下信息:

  • 证书发布机构
  • 证书有效期
  • 公钥
  • 证书所有者
  • 签名

需要注意的是:申请证书的时候,需要在特定平台生成查,会同时生成一对儿密钥对儿,即公钥和私钥。这对密钥对儿就是用来在网络通信中进行明文加密以及数字签名的。

3.3数据签名

签名的形成是基于非对称加密算法的,注意,目前暂时和https没有关系,不要和https中的公钥私钥搞混了。

当服务端申请CA证书的时候,CA机构会对该服务端进行审核,并专门为该网站形成数字签名,过程如

  1. CA机构拥有非对称加密的私钥A和公钥A
  2. CA机构对服务端申请的证书明文数据进行hash,形成数据摘要
  3. 然后对数据摘要用CA私钥A'加密,得到数字签名S

服务端申请的证书明文和数字签名S共同组成了数字证书,这样一份数字证书就可以颁发给服务端了

4.总结

HTTPS 工作过程中涉及到的密钥有三组.

  1. 第一组(非对称加密):用于校验证书是否被篡改,服务器持有私钥(私钥在注册证书时获得),客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些,同时持有对应的公钥).服务器使用这个私钥对证书的签名进行加密,客户端通过这个公钥解密获取到证书的签名,从而校验证书内容是否是篡改过.
  2. 第二组(非对称加密):用于协商生成对称加密的密钥.服务器生成这组 私钥-公钥 对,然后通过证书把公钥传递给客户端.然后客户端用这个公钥给生成的对称加密的密钥加密,传输给服务器,服务器通过私钥解密获取到对称加密密钥.
  3. 第三组(对称加密):客户端和服务器后续传输的数据都通过这个对称密钥加密解密其实一切的关键都是围绕这个对称加密的密钥,其他的机制都是辅助这个密钥工作的
  • 第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器.
  • 第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥.

以上表示HTTPS协议的基本内容。

相关推荐
明月看潮生17 分钟前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
‍。。。1 小时前
使用Rust实现http/https正向代理
http·https·rust
龙哥说跨境1 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我1 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023912 小时前
06 网络编程基础
java·网络
pk_xz1234563 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强3 小时前
Linux之sed命令详解
linux·运维·服务器
海绵波波1073 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
九河云5 小时前
AWS账号注册费用详解:新用户是否需要付费?
服务器·云计算·aws
Lary_Rock5 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器