关于网络安全加密的介绍可以看之前文章:

1. 网络安全——数据的加密与签名,RSA介绍
2. Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)
3. When I see you again(DES、AES、RSA、Base64、MD5加密原理介绍,代码实现)

HTTPS建立过程相当复杂,下图为示意图,可以有整体认识,一般我们编程知道这些已足够。

如果你想仿照HTTPS实现类似加密,可以阅读下具体过程,作为参照

准备工作(对应图中prepare1234)

可以看到,在客户端向服务器发起请求前,还有一些准备工作要做,或者说是有一些工作已经做好了。

  • 从CA证书颁发机构,获取数字证书。

    • 服务器:生成一对公私钥S.pub,S.pri,私钥自己保留,用于解密和签名,不能外泄。将公钥S.pub,身份信息,传给CA(Certificate Authority)机构;
    • CA机构:也有公私钥C.pub,C.pri;由S.pub,身份信息另外附加CA签名生成数字证书(签名使用C.pri进行签名)
    • 将数字证书颁发给申请者(服务器)
  • 客户端(比如我们经常使用的浏览器),为了安全性,会内置一份CA根证书,它包含公钥C.pup,用于对数字证书验证

发起链接

https使用的是443端口,而http使用的是80端口

TCP端口号是一个2字节的整型,处于TCP报文段的前四个字节(2字节源端口号,2字节目的端口号)。

很明显范围是0~65535。其中0~1023具有特殊意义,已经被绑定,比如上面说的443,80,还有ftp的21端口。从1024~49151也具有特殊含义,但是还没有被用完,比如8080端口重定向。剩下的我们就可以随便使用,自定义了。

其实之前在嵌入式开发中,没有连接外网,也没有使用浏览器等等这些。所以端口完全自定义随便用,不用担心冲突:)。

下面的过程为具体详细一点的过程,如果不想看,可以完全只看示意图即可,对我们平时开发用处并不大。或者你在用wireshark类似的抓包工具时看的抓狂不认识,可以看看(反正我用Charles抓包):

1 客户端发起请求(对应图中1)

同样需要三次握手,建立TCP连接(毫无疑问HTTPS也是基于TCP的)

2 客户端发送Client Hello包(对应图中2)

  • 随机数

里面有1970年1月1日到现在的秒数,后面还有一个客户端发来的随机数Client.random

  • Session ID

如果客户端与服务器费尽周折建立了一个HTTPS链接,刚建完就断了,也太可惜,所以用Session ID将其保存,如果下次再来可以直接使用之前的链接进行对话(对称密钥)。

  • 密文族

告诉服务器,自己支持的加密算法种类

  • Server_name

3 Server Hello(对应图中2)

  • 随机数:对应服务器时间,服务器sever.random
  • Seesion ID,如果客户端发给服务器的session ID在服务端有缓存,服务端会尝试使用这个session;否则服务器会启用新的并返回给客户端;
  • 服务器挑选一个密文族

4 Certificate(对应图中2)

服务器终于发来我们想要的数字证书,包含了:签发机构、过期时间、主题名称、公共密钥信息、指纹信息等等

5 Server Hello Done(对应图中2)

服务器发送结束

6 客户端验证(对应图中3)

客户端从内置的CA根证书获取C.pub,对服务器发送来的数字证书进行验签,如果一致,说明证书是CA颁发的(前提是C.pub是真实的,确实是CA机构的公钥)。然后看看证书是否过期,域名是否匹配

7 生成对称密钥(对应图中4、5、6)

客户端根据之前的:Client.random + sever.random + pre-master生成对称密钥

经过S.pub加密发送给服务器,之后即可通过对称密钥进行通讯。(就是之前我们熟悉的http)

最后

在整个过程中,一共涉及2对公私密钥对,一对由服务器产生,主要用于加密,一对由CA产生,主要用于签名。

为什么要多一个CA呢?

假设没有CA,那么如果服务器返回的包含公钥的包被hack截取,然后hack也生成一对公私钥,他将自己的公钥发给客户端。hack得到客户端数据后,解密,然后再通过服务器的公钥加密发给服务器,这样数据就被hack获取。

有了CA后,客户端根据内置的CA根证书,很容易识别出hack的公钥不合法,或者说hack的证书不合法。

转载于:https://www.cnblogs.com/mddblog/p/6948980.html

网络安全——一图看懂HTTPS建立过程相关推荐

  1. TLS就是SSL的升级版+网络安全——一图看懂HTTPS建立过程——本质上就是引入第三方监管,web服务器需要先生成公钥和私钥,去CA申请,https通信时候浏览器会去CA校验CA证书的有效性...

    起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于 ...

  2. 一张图看懂项目管理的47个过程(干货)

    一张图看懂项目管理的47个过程(干货)

  3. 图解HTTPS建立过程

    阅读目录 准备工作(对应图中prepare1234) 发起链接 最后 关于网络安全加密的介绍可以看之前文章: 1. 网络安全--数据的加密与签名,RSA介绍 2. Base64编码.MD5.SHA1- ...

  4. 一图看懂新一代人工智能知识体系大全

    来源:财经头条 摘要:人工智能的发展离不开基础支持层和技术层,基础支持层包括大数据.计算力和算法:技术层包括计算机视觉.语音识别和自然语言处理.人工智能的技术本质是什么,本文会详细分析. 人工智能的发 ...

  5. sdn体系的三个平面_十张图看懂SDN与NFV的区别与联系?

    原标题:十张图看懂SDN与NFV的区别与联系? 专业的人说的很准确但是普通人难以理解,常常记不住,分不清,不专业的人往往又说的差点意思.无意间,笔者在领英上看到一个介绍SDN/NFV区别的公开文档,内 ...

  6. 一图看懂软件缺陷检查涉及的内容

    摘要:软件安全检查极具挑战性,目前的主要理论和技术研究都是欧美完成的.希望有更多的软件开发人员能够投入到这个领域,为国产的静态软件分析做出贡献. 本文分享自华为云社区<一图看懂软件缺陷检查涉及的 ...

  7. 一张图看懂Battery Charging Specification 1.2(BC1.2)USB充电协议

    一张图看懂Battery Charging Specification 1.2(BC1.2)USB充电协议 作者:AirCity 2019.11.2 本文所有权归作者Aircity所有 Aircity ...

  8. 一张图看懂世界石油分布?用Python轻松搞定!

     CDA数据分析师 出品   [导语]:今天我们教你用Python画出世界石油分布桑基图,Python技术部分可以直接看第四部分. 作者:Mika 数据:真达   后期:泽龙  设计:一凡   Sho ...

  9. 一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, 资料整理+笔记(大全)

    本文由 大侠(AhcaoZhu)原创,转载请声明. 链接: https://blog.csdn.net/Ahcao2008 一图看懂 aiohttp 模块:基于 asyncio 的异步HTTP网络库, ...

最新文章

  1. 宏基因组数据提交GSA实操手册—发表文章前必备技能
  2. github上传文件夹教程
  3. 移动中”的HTML5-开源图表库ichartjs-王鹤
  4. matlab调用opencv的函数
  5. ZNZD平台vue项目
  6. P3332 [ZJOI2013]K大数查询(整体二分做法)
  7. 注入代码oracle
  8. 默认网关出现乱码_SpringCloudZuul服务网关
  9. 4个常用的计算机应用软件,信息技术应用--常用计算机工具软件4常用工具软件单元四.pdf...
  10. Docker教程:docker的概念及安装
  11. 5G应用技术系列 - 从带宽和时延看5G和4G对应用区别
  12. 来成都旅游,千万不要做的22件事!
  13. 资源分享 | SAHI:超大图片中对小目标检测的切片辅助超推理库
  14. python如何拼读英语单词怎么写_怎么用英标快速拼读英语单词,这些技巧你知道吗...
  15. 几个可以提高工作效率的Python内置小工具
  16. getchar()函数的作用
  17. 一百行代码实现微信朋友圈九宫格图片显示
  18. adobe全系列最新安装教程
  19. Linux grep/egrep命令详解
  20. mysql实现layui分页_LayUI

热门文章

  1. oracle的索引在哪儿看,Oracle如何查看索引和视图
  2. XP那些事儿(此文参与2014-2015年南开大学大学语文征文活动)
  3. 花椒服务端k8s技术实践
  4. 「Python海龟画图」利用海龟画笔绘制六芒星阵
  5. ABS塑料类最新发表的论文有哪些?
  6. 青岛大学计算机专硕分数线,2020青岛大学研究生分数线汇总(含2016-2019历年复试)...
  7. linux监控服务报警,linux服务器监控手机报警
  8. python基础笔记,超详细,包含面向对象基础,爬虫实战【持续更新中...】
  9. iOS 10解决了用iPhone 6s拍照最烦人的事情
  10. 计算机网络技术实验报告三,计算机网络第三次实验报告