目录

1.https验证原理

1.1原理图

1.2https建立连接过程

1.2.1 客户端访问https连接

1.2.2 - 1.2.3 服务端发送证书(公钥)给客户端

1.2.4- 1.2.5 客户端验证服务端的证书

1.2.6 - 1.2.7 服务端接收加密信息,解密得到客户端提供的随机字符串

1.2.8 客户端验证服务端返回的握手信息,完成握手

1.3 验证总结

2.SSL请求完整过程示例

3.客户端验证证书的合法性


Http协议

由于 HTTP 协议在通信过程中,是基于明文通信,并且底层是基于 TCP/IP 协议进行通信,那么按照 TCP/IP 协议族的工作机制,通信内容在所有的通信线路上都有可能遭到拦截和窃取。

https 安全传输协议

由于 HTTP 协议通信的不安全性,所以人们为了防止信息在传输过程中遭到泄漏或者篡改,就想出来对传输通道进行加密的方式 https。https 是一种加密的超文本传输协议,它与 HTTP 在协议差异在于对数据传输的过程中,https对数据做了完全加密。由于 http 协议或者 https 协议都是处于 TCP 传输层之上,同时网络协议又是一个分层的结构,所以在 tcp 协议层之上增加了一层 SSL(Secure Socket Layer,安全层)或者 TLS(Transport Layer Security) 安全层传输协议组合使用用于构造加密通道。

1.https验证原理

1.1原理图

下面是一张https建立连接的原理图,下面会对每一步进行说明:

1.2https建立连接过程

1.2.1 客户端访问https连接

这一步,就是相当于我们在浏览器上输入url回车的过程。这个时候浏览器或者客户端(接下来统一为客户端)会把我们客户端支持的加密算法Cipher Suite(密钥算法套件)带给服务端。

1.2.2 - 1.2.3 服务端发送证书(公钥)给客户端

服务端接收Cipher后,和自己支持的加密算法进行比对,如果不符合,则断开连接。否则,服务端会把符合的算法和证书发给客户端,包括证书时间、证书日期、证书颁发的机构。

1.2.4- 1.2.5 客户端验证服务端的证书

1、客户端验证证书,包括颁发证书的机构是否合法与是否过期,证书中包含的网站地址是否与正在访问的地址一致等;

2、验证通过后(或者用户接受了不信任的证书),客户端会生成一个随机字符串,然后用服务端的公钥进行加密。这里就保证了只有服务端才能看到这串随机字符串(因为服务端拥有公钥对应的私钥,RSA解密,可以知道客户端的随机字符串)。

3、生成握手信息 用约定好的HASH算法,对握手信息进行取HASH,然后用随机字符串加密握手信息和握手信息的签名HASH值,把结果发给服务端。这里之所以要带上握手信息的HASH是因为,防止信息被篡改。如果信息被篡改,那么服务端接收到信息进行HASH时,就会发现HASH值和客户端传回来的不一样。这里就保证了信息不会被篡改。

1.2.6 - 1.2.7 服务端接收加密信息,解密得到客户端提供的随机字符串

服务端接收到加密信息后,首先用私钥解密得到随机字符串。然后用随机字符串解密握手信息,获得握手信息和握手信息的HASH值,服务端对握手信息进行HASH,比对客户端传回来的HASH。如果相同,则说明信息没有被篡改。

服务端验证完客户端的信息以后,同样使用随机字符串加密握手信息和握手信息的HASH值发给客户端。

1.2.8 客户端验证服务端返回的握手信息,完成握手

客户端接收到服务端发回来的握手信息后,用一开始生成的随机字符串对密文进行解密,得到握手信息和握手信息的HASH值,像一步服务端验证一样对握手信息进行校验,校验通过后,握手完毕。从这里开始,客户端和服务端的通信就使用那串随机字符串进行AES对称加密通信。

1.3 验证总结

使用RSA非对称算法,服务端向客户端发送公钥,公钥包含了域名、颁发机构、过期日期。保证了公钥的合法性和服务端的身份正确性(而不会被黑客冒充)
客户端向第三方验证公钥的合法性,验证通过后向服务端约定对称加密的随机字符号。保证了随机字符串只有通信双方知道。
接下来的通信就使用这个随机字符号进行加密通信。因为随机字符串只有双方知道,所以信息不会被截获。

2.SSL请求完整过程示例

step1: “客户”向服务端发送一个通信请求

“客户”->“服务器”:你好

step2: “服务器”向客户发送自己的数字证书。证书中有一个公钥用来加密信息,私钥由“服务器”持有

“服务器”->“客户”:你好,我是服务器,这里是我的数字证书

step3: “客户”收到“服务器”的证书后,它会去验证这个数字证书到底是不是“服务器”的,数字证书有没有什么问题,数字证书如果检查没有问题,就说明数字证书中的公钥确实是“服务器”的。检查数字证书后,“客户”会发送一个随机的字符串给“服务器”用私钥去加密,服务器把加密的结果返回给“客户”,“客户”用公钥解密这个返回结果,如果解密结果与之前生成的随机字符串一致,那说明对方确实是私钥的持有者,或者说对方确实是“服务器”。

“客户”->“服务器”:向我证明你就是服务器,这是一个随机字符串     //前面的例子中为了方便解释,用的是“你好”等内容,实际情况下一般是随机生成的一个字符串。

“服务器”->“客户”:{一个随机字符串}[私钥|RSA]

step4: 验证“服务器”的身份后,“客户”生成一个对称加密算法和密钥,用于后面的通信的加密和解密。这个对称加密算法和密钥,“客户”会用公钥加密后发送给“服务器”,别人截获了也没用,因为只有“服务器”手中有可以解密的私钥。这样,后面“服务器”和“客户”就都可以用对称加密算法来加密和解密通信内容了。

“服务器”->“客户”:{OK,已经收到你发来的对称加密算法和密钥!有什么可以帮到你的?}[密钥|对称加密算法]

“客户”->“服务器”:{我的帐号是aaa,密码是123,把我的余额的信息发给我看看}[密钥|对称加密算法]

“服务器”->“客户”:{你好,你的余额是100元}[密钥|对称加密算法]

…… //继续其它的通信

3.客户端验证证书的合法性

为了验证证书的合法性,首先客户端要知道一些合法的证书机构,这就是我们所说的根证书。而根证书会保存在用户的浏览器或者其它客户端,像jdk的根证书列表。
当然证书不可能只有几个机构进行颁发的,所以证书的颁发是一级一级的。客户端在验证证书也是一级一级往下验证。下面是阿里的证书:

最顶级的VeriSign Class 3 Public Primary Certification Authori... 就是根证书了, 这个证书一般会保存在客户端,在客户端安装时就有一组根证书了,如果服务端根证书在客户端的信任列表中,那么就会向根证书验证二级证书的合法性,然后再向二级证书机构验证三级证书的合法性,以此类推。

参考:

https://www.jianshu.com/p/33d0f8631f90

https://blog.csdn.net/xiaopang_yan/article/details/78709574

https://www.solves.com.cn/it/wl/zs/2019-09-04/4377.html

https实现原理(SSL认证过程)相关推荐

  1. HTTPS篇之SSL握手过程详解

    由于最近接触到的一个项目数据有些敏感,所以需要通过加密算法保证数据的安全性.由于公司之前有一套自定义传输协议并且有配套的公共代码导致客户端人员不太愿意使用 WWS 协议.且之前的协议没有协议层的数据加 ...

  2. :https web服务器ssl认证项目,Https自定义证书引入问题(2)

    上一篇介绍接口使用https并且证书是自签的情况下,如何在客户端信任服务器证书,没有看过的请移步 1.Webview加载https问题 1.1 最简单的方式,助各位大佬一秒脱坑 自定义证书的https ...

  3. 服务器双向认证 原理,https认证方式以及HTTPS双向认证过程

    https认证方式以及HTTPS双向认证过程 分类:建站推广 编辑: 浏览量:100 2021-07-15 14:29:14 很多网站都配置了HTTPS而不是HTTP,因为安全性得到了极大的提高,如果 ...

  4. 服务器双向认证 原理,什么叫SSL双向认证 SSL双向认证过程是怎样的

    我们都知道SSL认证能够分成SSL双向认证和SSL单向认证.那么,什么是SSL双向认证?SSL双向认证过程又是怎样的?小编就在接下来的内容为各位详细讲述. 什么叫SSL双向认证 SSL双向认证则是需要 ...

  5. https协议原理过程

    https协议原理过程 https概念 https是基于安全目的的Http通道,其安全基础由SSL层来保证.最初由netscape公司研发,主要提供了通讯双方的身份认证和加密通信方法.现在广泛应用于互 ...

  6. SSL/TSL双向认证过程与Wireshark抓包分析

    原博文 1. SSL/TSL基本知识 (1)SSL/TLS协议运行机制:https://blog.csdn.net/fw0124/article/details/40873253 (2)图解SSL/T ...

  7. TLS/SSL 工作原理及握手过程详解

    目录 前言 TLS/SSL 基础概念 密钥协商过程中存在的问题及解决办法 TLS/SSL 握手过程 前言 本文是对 HTTPS 安全基础.TLS/SSL 工作原理及握手过程的总结.第一部分介绍为 HT ...

  8. HTTPS协议详解:TLS/SSL握手过程

    1.握手与密钥协商过程 基于RSA握手和密钥交换的客户端验证服务器为示例详解TLS/SSL握手过程 再看一张手绘时序图 (1).client_hello 在发送的 Client Hello 中会带上自 ...

  9. HTTPS TLS/SSL握手过程

    一.握手与密钥协商过程 基于RSA握手和密钥交换的客户端验证服务器为示例详解TLS/SSL握手过程. 1.client_hello 客户端发起请求,以明文传输请求信息,包含版本信息,加密套件候选列表, ...

最新文章

  1. 数据结构与算法(6-5)二叉树的应用--哈夫曼树与哈夫曼编码
  2. ACM 中常用的算法有哪些?
  3. 重磅!国内首个缺陷检测教程:理论、源码与实战
  4. html的高度自适应,CSS布局自适应高度解决方法
  5. Rabin-Karp算法 java_第 2 章 字符串
  6. 国二C语言文字选择程序选择,全国计算机等级考试二级C语言题型总结(二)——选择循环结构程序设计部分.doc...
  7. 程序员为什么要单身?
  8. 细数Ajax Control Toolkit 34个服务器端控件
  9. Node系列——Node第三方模块使用总结
  10. SAP S/4HANA装到Docker里的镜像有多大
  11. block--内存管理
  12. BZOJ1324Exca王者之剑BZOJ1475方格取数——二分图最大独立集
  13. 网络疯传IT男女标配图
  14. HDF5 library version mismatched error
  15. edptrayicon怎么卸载_谁知道怎样删除北信源内网管理软件客户端?
  16. 笔记本计算机运行程序,这几招让你的笔记本电脑运行速度变快 必学技巧
  17. 打开.mpp文件有感
  18. 轻松掌握计算机视觉三维重建的几何基础:坐标系与关键矩阵(基础矩阵、本质矩阵、单应矩阵)
  19. 论文笔记(CPN):Cascaded Pyramid Network for Multi-Person Pose Estimation
  20. MiniUI日期选择框MonthPicker英文修改为中文

热门文章

  1. Office project 2010安装教程
  2. 攻防世界--very_easy_sql
  3. RocksDB 介绍
  4. Aadobe CC 2014安装失败
  5. 中关村程序员的996强制加班与工作效率
  6. 深度优先搜索求解八数码问题
  7. 青龙面板之京东【强烈推荐】
  8. 模仿新浪微博字数限制提示
  9. window10登录界面进不了,怎么办
  10. k8s和harbor的集成_在Kubernetes集群上部署高可用Harbor镜像仓库