什么是HTTPS?

HTTPS 是在HTTP(Hyper Text Transfer Protocol)的基础上加入SSL(Secure Sockets Layer),在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。依此避免HTTP的明文传输容易被窃听、不验证身份容易被伪装、无法验证报文完整性容易被篡改等问题。除了被广泛用于互联网上安全敏感的通讯,大部分网站也正在广泛采用 。

HTTPS的通信机制

HTTPS不仅仅是把http://换成https://看上去那么简单,HTTPS的通信机制要比HTTP的复杂一些。

第一步,客户端向服务端发送Client Hello报文。在报文中描述了客户端支持的SSL版本,还有客户端支持的加密算法及密钥长度。

第二步,服务端向客户端发送Server Hello报文作为应答。在报文中描述了服务端和客户端可以共同使用的SSL版本、加密算法及密钥长度,以此作为后续报文传输的加密方式。

第三步,服务端向客户端发送Certificate报文。在报文中包含由数字证书认证机构(Certificate Authority,CA)和其相关机构颁发的公共密钥证书。

第四步,服务端向客户端发送Server Hello Done报文,通知客户端SSL握手协商部分结束。

第五步,当客户端收到服务端SSL握手结束的报文后,客户端首先验证证书的合法性和可靠性,然后向服务端发送Client Key Exchange报文。在报文中包含了使用证书中公开密钥加密的随机密钥。

第六步,客户端向服务端发送Change Cipher Spec报文。这个报文是为了提示服务端之后的通信都使用那个随机密钥进行对称加密。

第七步,客户端向服务端发送Finished报文。这个报文包含从开始连接到现在全部报文的整体校验值。服务端,握手协商成功。

第八步,当服务端能够正确解密并验证客户端的校验值时,同样向客户端发送Change Cipher Spec报文。

第九步,服务端向客户端同样发送Finished报文。

第十步,服务端和客户端的Finished报文交换完毕之后,SSL连接就建立完成了。当通信会受到 SSL 的保护后,开始发送 HTTP 请求和相应。

尾声

目前越来越多的核心技术被“卡脖子”,之前也传出一些开源软件禁止我国的使用。我有一个担心,万一CA也别被“卡脖子”,甚至被“征用”,那么我国的网络安全会受到极大的威胁。


竟然已经看到这里了,你我定是有缘人,留下你的点赞关注,他日必成大器。

微信公众号:万猫学社

微信扫描二维码

关注后回复「电子书」

获取12本Java必读技术书籍

浅析HTTPS的通信机制的更多相关文章

  1. get与post区别,https协议的通信机制

    get与post区别 幂等的的意思就是一个操作不会修改状态信息,并且每次操作的时候都返回同样的结果.即:做多次提交和做一次的对服务器效果是一样 的. 方法 用法 是否能修改服务器数据 幂等 安全 入参 ...

  2. RChain节点通信机制(上)

    在介绍RChain的通信机制之前,先简单介绍一些以太坊的通信机制,它包括以下几个方面,如下详细了解以太坊的通信机制,可以查看https://github.com/ethereum/devp2p/blo ...

  3. 我所理解的Android组件化之通信机制

    之前写过一篇关于Android组件化的文章,<Android组件化框架设计与实践>,之前没看过的小伙伴可以先点击阅读.那篇文章是从实战中进行总结得来,是公司的一个真实项目进行组件化架构改造 ...

  4. [转]Shared——探究react-native通信机制

    原文:https://www.cnblogs.com/android-blogs/p/5623481.html 探究react-native通信机制 通信方式 我们所说的[通信],指的是RN中Java ...

  5. Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制

    Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制 JAVA 中原生的 socket 通信机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.co ...

  6. flux沉思录:面向store和通信机制的前端框架

    一.综述 Flux 被用来描述“单向”的数据流,且包含某些特殊的事件和监听器. 响应式编程是一种面向数据流和变化传播的编程范式 flux是响应式编程的一种? Flux 在本质上采用了模型-视图-控制器 ...

  7. [源码解析] TensorFlow 分布式环境(8) --- 通信机制

    [源码解析] TensorFlow 分布式环境(8) --- 通信机制 目录 [源码解析] TensorFlow 分布式环境(8) --- 通信机制 1. 机制 1.1 消息标识符 1.1.1 定义 ...

  8. .Net中Remoting通信机制简单实例

    .Net中Remoting通信机制 前言: 本程序例子实现一个简单的Remoting通信案例 本程序采用语言:c# 编译工具:vs2013工程文件 编译环境:.net 4.0 程序模块: Test测试 ...

  9. .Net中Remoting通信机制

    Remoting通信机制 Remoting介绍 主要元素 通道类型 激活方式 对象定义 Remoting介绍 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式. 从微软的产品角度 ...

  10. 【单页应用之通信机制】view之间应该如何通信

    前言 在单页应用中,view与view之间的通信机制一直是一个重点,因为单页应用的所有操作以及状态管理全部发生在一个页面上 没有很好的组织的话很容易就乱了,就算表面上看起来没有问题,事实上会有各种隐忧 ...

随机推荐

  1. SpringBoot工程入门case

    SpringBoot的设计目的是用来简化Spring应用的初始搭建以及开发过程. SpringBoot入门案例: 1.创建一个新module 2.除pom和src文件剩余都删除. 3.在src.com ...

  2. Salesforce LWC学习(二十) CLI篇:新版本不支持Audience解决方案

    本篇参考:https://github.com/forcedotcom/cli/issues/470 https://developer.salesforce.com/docs/atlas.en-us ...

  3. MyBatis 分页(前后端插件)实现

    一.后端使用 PageHelper插件 [1]引入 PageHelper jar包(Maven项目) 1 <dependency> 2 <groupId>com.github. ...

  4. MySQL 索引的种类

    我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,所以查询语句的优化显然是重中之重. 一.平衡多路查 ...

  5. Leetcode Practice -- 字符串

    目录 14. 最长公共前缀 思路解析 151. 反转字符串中的单词 思路解析 125. 验证回文串 思路解析 415. 字符串相加 思路解析 3. 无重复字符的最长子串 思路解析 8. 字符串转换整数 ...

  6. flutter widget---->Spacer

    如果你想灵活控制Flex容器(Row, Column)中子组件中的间隔,可以考虑使用Spacer.下面以Row为例子,来为它的子组件添加间距. use Spacer import 'package:f ...

  7. active

    rabbitMQ与activeMQ区别 之前的项目中都用到了这两个消息队列 ActiveMq,传统的消息队列,使用Java语言编写.基于JMS(Java Message Service),采用多线程并 ...

  8. JetBrains 2022全家桶-激活

    ## JetBrains 全家桶 激活教程 https://tech.souyunku.com/?page_id=50199

  9. Redis分布式Session和普通的cookie session有什么区别?

    Redis 是一种高性能的缓存和 key-value 存储系统,常被用来实现分布式 Session 的方案.在这种方案中,用户的登录信息存储在 Redis 中,而不是存储在本地的 cookie 或 s ...

  10. 【命令设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

    简介 命令模式(Command Pattern)是一种数据驱动的设计模式,也是一种行为型设计模式.这种模式的请求以命令的形式包裹在对象中,并传给调用对象.调用对象再寻找合适的对象,并把该命令传给相应的 ...