| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> HTTPS与HTTP区别,SSL/TLS认证过程 -> 正文阅读 |
|
[网络协议]HTTPS与HTTP区别,SSL/TLS认证过程 |
1.http是超文本传输协议,信息是明文传输,存在安全风险的问题。Https则解决HTTP不安全的缺陷,在TCP和HTTP网络层之间加入了SSLTLS安全协议,使得报文能够加密传输。 2. HTTP连接建立相对简单,TCP 三次握手之后便可进行HTTP的报文传输。而HTTPS在TCP三次握手之后,还需进行SSLTLS的握手过程,才可进入加密报文传输。 3. HTTP的端口号是80, HTTPS的端口号是443。 4. HTTPS协议需要向CA (证书权威机构)申请数字证书,来保证服务器的身份是可信的。 https解决了的哪些问题?HTTP由于是明文传输,所以安全上存在以下三个风险: . ●窃听风险,比如通信链路上可以获取通信内容,用户号容易没。 ●篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。 ●冒充风险,比如冒充淘宝网站,用户钱容易没。 HTTPS是如何解决上面的三个风险的? ●混合加密的方式实现信息的机密性,解决了窃听的风险。 ●摘要算法的方式来实现完整性,它能够为数据生成独一无二的「指纹」,指纹用于校验数据的完整性,解决了篡改的风险。 ●将服务器公钥放入到数字证书中,解决了冒充的风险。 HTTPS中SSL/TLS认证过程主要有四个过程 1. ClientHello 由客户端向服务器发起加密通信请求 在这一步,客户端主要向服务器发送以下信息: (1) 客户端支持的SSLTLS协议版本,如TLS 1.2版本。 (2)客户端生产的随机数( Client Random ),后面用于生产「会话秘钥」。 (3)客户端支持的密码套件列表,如RSA加密算法。 2. SeverHello 向客户端发出响应,也就是SeverHello 。 服务器回应的内容有如下内容: (1)确认SSL\TLS协议版本,如果浏览器不支持,则关闭加密通信。 (2)服务器生产的随机数( Server Random ),后面用于生产「会话秘钥」。 (3)确认的密码套件列表,如RSA加密算法。 (4)服务器的数字证书。 3.客户端回应. 首先通过浏览器或者操作系统中的CA公钥,确认服务器的数字证书的真实性。 如果证书没有问题,客户端会从数字证书中取出服务器的公钥,然后使用它加密报文,向服务器发送如下信息: (1) 一个随机数( pre-master key )。该随机数会被服务器公钥加密。 (2)加密通信算法改变通知,表示随后的信息都将用「会话秘钥」加密通信。 (3) 客户端握手结束通知,表示客户端的握手阶段已经结束。这-项同时把之前所有内容的发生的数据做个摘要,用来供服务端校验。 上面第一项的随机数是整个握手阶段的第三个随机数,这样服务器和客户端就同时有三个随机数,接着就用双方协商的加密算法,各自生成本次通信的「会话秘钥」。 4.服务器的最后回应. 服务器收到客户端的第三个随机数( pre-master key )之后,通过协商的加密算法,计算出本次通信的「会话秘钥」。然后,向客户端发生最后的信息: (1)加密通信算法改变通知,表示随后的信息都将用「会话秘钥」加密通信。 (2)服务器握手结束通知,表示服务器的握手阶段已经结束。这-项同时把之前所有内容的发生的数据做个摘要,用来供客户端校验。 至此,整个SSLTLS的握手阶段全部结束。接下来,客户端与服务器进入加密通信,就完全是使用普通的HTTP协议,只不过用「会话秘钥」加密内容。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:50:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |