阅读目录

  • 准备工作(对应图中prepare1234)
  • 发起链接
  • 最后

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

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.pri,用于对数字证书验证

发起链接

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的证书不合法。

http://www.cnblogs.com/mddblog/p/6948980.html

标题中的新版指:版本 56.0.2924.87 (64-bit)

原来的版本可以点击绿色的小锁进入查看页面,新版的已经改了

新版的进入方式为F12-->Security选项卡(找不到的点右箭头>>),然后点击View certificate

图解HTTPS建立过程相关推荐

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

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

  2. 网络安全——一图看懂HTTPS建立过程

    关于网络安全加密的介绍可以看之前文章: 1. 网络安全--数据的加密与签名,RSA介绍 2. Base64编码.MD5.SHA1-SHA512.HMAC(SHA1-SHA512) 3. When I ...

  3. HTTPS 建立连接的详细过程

    目录 原文链接:HTTPS 建立连接的详细过程 - cccc_hi - 博客园 简介 对称加密和非对称加密 建立连接 tcp的三次挥手和四次挥手 HTTP请求过程 HTTPS 原文链接:HTTPS 建 ...

  4. https建立的过程

    首先知道http和https有什么区别? http使用端口80,https使用端口443 http运行在TCP协议上,所传输的内容那个都是明文,https运行在SSL/TLS上,SSl/TLS是运行在 ...

  5. eigrp ospf 邻居建立过程比较

    EIGRP邻居建立过程 1.路由器A启动,然后在链路上发送hello包 2.路由器B接收到A发来的hello包,然后做出应答,发回update包给A,告诉A它自己的路由表的信息.但是这个时候 邻居关系 ...

  6. 深度学习模型建立过程_所有深度学习都是统计模型的建立

    深度学习模型建立过程 Deep learning is often used to make predictions for data driven analysis. But what are th ...

  7. sendmail邮件服务器的基本建立过程

    邮件服务器的基本建立过程(sendmail) 第一章  邮件传送的基本理论 一.专用名词解释: 1.MUA:邮件用户代理,主要是收存在邮件服务器的电子邮件,和编写浏览电子邮件.如:outlook , ...

  8. Nginx使用HTTPS建立与上游服务器的网络通信

    Nginx使用HTTPS建立与上游服务器的网络通信 本文介绍了如何加密NGINX与上游组或代理服务器之间的HTTP通信. 先决条件 NGINX开源或NGINX Plus 甲代理服务器或服务器的上游组 ...

  9. PCM data flow - 6 - 声卡和PCM设备的建立过程

    前面几章分析了Codec.Platform.Machine驱动的组成部分及其注册过程,这三者都是物理设备相关的,大家应该对音频物理链路有了一定的认知.接着分析音频驱动的中间层,由于这些并不是真正的物理 ...

最新文章

  1. 多路归并排序_1600W整数排序多路归并
  2. JVM - 常见的JVM种类
  3. 二分图带权最大匹配费用流_一文掌握阻抗匹配
  4. Winform定时启动
  5. 微服务间保持事务一致性
  6. call and apply
  7. mysql in从数据库取数_MySQL数据库中 where in 用法详解
  8. [it-ebooks]电子书列表
  9. 内蒙古自治区呼伦贝尔市谷歌高清卫星地图下载
  10. linux查看u盘的分区格式化,linux U盘格式化ext3
  11. caffe源码解析by薛云峰
  12. 世界人工智能大会-杨强演讲内容ppt
  13. 因服务器升级维护平安京怎么办,《阴阳师》手游6月16日维护更新公告
  14. 排序算法伪代码以及python实现——插入,归并,快速,堆,计数
  15. windows os x linux比较,windows、Linux与OS X相比,哪个系统更适合写代码?
  16. 为什么要学数学--读《给讨厌数学的人》第二章之读书笔记
  17. Win7不显示移动硬盘盘符的解决方法
  18. 店开天下,阿里云助力客如云数据中台建设
  19. [Google]google一些常用的搜索技巧探讨
  20. Python编程基础题(9-求绝对值最大的元素)

热门文章

  1. 大学毕业了,你是否需要需要职业化培训!
  2. Nginx+Tomcat动静分离搭建
  3. 嵌入式Linux综合知识
  4. Silverlight入门:第三部分 - 数据访问
  5. 项目松弛时期 团队如何休养生息?
  6. python3 x完全兼容_【转】Python3.x与Python2.x的主要区别 (O_O )?
  7. 哪个版本好_《道德经》道尽人生大智慧,哪个版本《道德经》的注释比较好呢?...
  8. android dslr控制软件,DSLR Controller
  9. php 去掉img,php怎样去掉img标签
  10. 关于学习Python的一点学习总结(7->相关字符串操作)