HTTPS协议其实就是HTTP over TSL,TSL(Transport Layer Security) 传输层安全协议是https协议的核心。

TSL可以理解为SSL (Secure Socket Layer)安全套接字层的后续版本。目前应用的最广泛的 TLS 是 1.2,而之前的协议(TLS1.1/1.0、SSLv3/v2)都已经被认为是不安全的了

TLS握手过程

由于HTTPS的实质是在TLS握手后建立的安全通道上进行的HTTP请求,因此本文只介绍TLS握手过程的几个关键步骤:

1.客户端向服务端发起请求,将一个随机数、自己的TLS版本号、Cipher Suite加密算法列表(告知服务器自己支持哪些加密算法)等发给服务端。

2.服务端将自己的证书、一个随机数、TLS版本、从Cipher Suite加密算法列表中选择使用的加密算法等发给客户端。

3.服务端继续将交换算法(ECDHE)公钥发送给客户端,一般只在服务端选择使用DHE 和DH_anon等加密算法组合时才会由服务器发出。

4.客户端验证证书(验证过程后文介绍),如果验证通过后,客户端将自己的交换算法(ECDHE)公钥发给服务端,一般只在服务端选择使用DHE 和DH_anon等加密算法组合时才会由服务器发出。

5.客户端随后用两个随机数+服务端交换算法(ECDHE)公钥配合自己的交换算法(ECDHE)私钥生成一个加密密钥key1,并且用key1加密一条消息发给服务端。

6.服务端收到消息后用两个随机数+客户端交换算法(ECDHE)公钥配合自己的交换算法(ECDHE)私钥生成一个加密密钥key2,并且用key2加密一条消息发给客户端,由于交换算法(ECDHE)可以保证key2等于key1,所以双方就有了一样的对称加密key进行加解密是,而且key1和key2并没有进行传输,所以第三方无法获取。

注意:以上步骤3、4是服务端在选择了DHE 和DH_anon等加密算法组合时才有,如果选择了其他非对称加密算法,则直接跳到5,并且在步骤5、6中的没有key1和key2,而是如下:

5.客户端生成一个key,然后用证书里得到的服务端公钥加密这个key,然后发给服务端,接着用这个key加密一条消息发给服务端。

6.服务端用自己的私钥解密得到key,并且用key加密一条消息发给客户端。

7.至此,TLS握手完成,后续HTTP请求的内容都用key1和key2(或者key)进行加密通信。

如果使用固定的公私钥算法有一定的安全风险,如:私钥泄露,因此交换算法(ECDHE)是一种更安全的加密方式。

如图所示基于交换算法(ECDHE)的TLS握手过程:

客户端如何验证证书的可靠性?

数字签名和数字证书

数字签名:

数字签名就是用HASH算法将一段内容生成固定长度的hash值,相同的内容一定生成相同的hash值,然后用CA私钥将hash值h1加密得到数字签名,所以数字签名就是用来保证内容没有被篡改的。

数字证书:

数字证书就是某个权威机构颁发的包含了有效期、服务端公钥信息和它加密算法、颁发者、用CA私钥加密的证书的数字签名等信息的证书。

一般权威机构的证书都会内置在系统或者浏览器里,浏览器在收到服务端的证书后,根据证书颁发者信息就去找内置的证书,找到后用内置证书的CA公钥解密数字证书得到证书hash值h1,然后用内置证书对应的hash算法对收到的证书内容进行hash计算,得到hash值h2,如果h1等于h2就证明收到的证书安全可靠。

这里注意内置证书的CA公钥和证书里的服务端公钥的区别,内置CA公钥用来解密数字签名,服务端公钥用来协商私钥。

参考资料:

HTTP与HTTPS的区别,详细介绍_张花生的博客-CSDN博客_http和https的区别

HTTPS协议、TLS协议、证书认证过程解析 - snowater - 博客园

最简单的HTTPS加密过程简介相关推荐

  1. HTTPS加密过程和TLS证书验证

    HTTPS加密过程和TLS证书验证 HTTPS 是在 HTTP 和 TCP 之间建立了一个安全层,HTTP 与 TCP 通信的时候,必须先进过一个安全层,对数据包进行加密,然后将加密后的数据包传送给 ...

  2. HTTPS 加密过程详解

    HTTPS 加密过程详解 HTTPS 中的概念 对比 HTTP 与 HTTPS 网络分层结构 对称加密 非对称加密 HTTPS 中的概念 明文:可以直接看到原始数据的文本: 密文:看不见原始数据的文本 ...

  3. HTTPS加密过程详解

    HTTPS加密过程详解 一.前言 二.HTTPS的混合加密 1.摘要算法 2.混合加密和数字证书 三.补充 四.参考资料 一.前言 http是为了解决http存在的问题而在http基础上加入了SSL/ ...

  4. http、https加密过程

    http: 超文本传输协议,是一个基于请求与响应,无状态无连接的,应用层的协议,常基于TCP/IP协议传输数据 <协议>://<域名>:<端口>/<路径> ...

  5. https加密过程(详细)

            握手.协商加密算法.获取公钥证书(含公钥一起发送至客户端).验证公钥证书(判断证书是否是第三方机构信任证书,创建对称密钥,每次传输一次对话随机创建一个对称密钥,客户端用服务器发送的公钥 ...

  6. HTTPS 的加密过程

    HTTPS 的加密过程 引言 理解加密解密 SSL 的握手过程 场景一 场景二 场景三 中间人攻击 场景四 总结 引言 HTTPS:Hyper Text Transfer Protocol over ...

  7. (非)对称加密算法在https中的应用(加密过程以及CA颁发、验证)

    文章目录 一.(非)对称加密 对称加密 非对称加密 二.http与https 1. HTTP 1.1 HTTP与TCP 1.2 短/长连接(HTTP如何使用TCP) 2. HTTPS = HTTP+S ...

  8. HTTPS加密数据传输过程

    HTTPS加密过程 HTTPS采用对称加密和非对称加密的混合加密方式 1.加密方式 2.混合加密 3.HTTPS的数据传输的优缺点 HTTPS采用对称加密和非对称加密的混合加密方式 1.加密方式 数据 ...

  9. SSL证书验证原理和https加密

    1.首先了解一下数字证书: 它有点像身份证,是由权威的CA机构颁发的,证书的主要内容有:公钥(Public Key).ISSUER(证书的发布机构).Subject(证书持有者).证书有效期.签名算法 ...

最新文章

  1. 长沙网络推广浅析影响网站快照更新时间的因素是什么?
  2. 用perl访问Oracle
  3. 2013年1月第4个周末
  4. 访问tomcat html,访问云服务器tomcat里html界面
  5. IHttpModule的那些事
  6. 【Angular 4】数据绑定
  7. 保罗兰德作品赏析_保罗兰德——理想化的设计师人生
  8. 物联那点事儿之自制网络温湿度计(arduino+点灯科技篇)
  9. Apeaksoft iOS Toolkit for Mac(iOS设备数据恢复软件)
  10. 共探数字化安全新未来,CSA SDP2.0标准发布暨零信任技术研讨会召开
  11. 将一个CSV格式的文件分割成两个CSV文件
  12. 机器学习笔记(一)-局部加权回归(Locally weighted regression)LWR
  13. 电容降压主要是用在直流稳压电源电路里
  14. Xcode直接安装ipa
  15. 微信小程序获取用户位置信息
  16. 使用CSS去除 去掉超链接的下划线方法
  17. python3 cookbook中常遇问题的解答记录
  18. 日益趋增的Linux勒索软件
  19. 第一章:Django入门篇
  20. 《海底捞你学不会》学什么

热门文章

  1. 关于计算机有用英语作文带翻译,关于健康的英语作文带翻译
  2. Win10 SQL Server 2012 企业版 安装教程
  3. 妥妥的去面试之Android基础(六)
  4. 前端插件库之vue3使用vue-codemirror插件
  5. 一文彻底搞懂执行上下文、VO、AO、Scope、[[scope]]、作用域链、闭包
  6. 聚乙二醇表面修饰氧化锌量子点/FA-PEG-CdTe/CdS量子点荧光探针特异性标记Hep-2的制备
  7. Java项目:进销存管理系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
  8. Python学习 10 - 基本数据类型小练习
  9. 图文并茂使用CocosBuilder制作Cocos2D游戏 分享0
  10. 人工智能等新技术将会给人们的生产、生活方式带来革命性的变化