Https为什么比Http安全?

news/2025/1/8 20:43:34/

Https是在Http之上做了一层加密和认证; 主要的区别是Https在TLS层对常规的Http请求和响应进行加密,同时对这些请求和响应进行数字签名。

Http请求的样式: 明文传输,通过抓包工具可以抓到

GET /hello.txt HTTP/1.1
User-Agent: curl/7.63.0 libcurl/7.63.0 OpenSSL/1.1.l zlib/1.2.11
Host: www.example.com
Accept-Language: en 

Https的请求样式:

t8Fw6T8UV81pQfyhDkhebbz7+oiwldr1j2gHBB3L3RFTRsQCpaSnSBZ78Vme+DpDVJPvZdZUZHpzbbcqmSW1+3xXGsERHg9YDmpYk0VVDiRvw1H5miNieJeJ/FNUjgH0BmVRWII6+T4MnDwmCMZUI/orxP3HGwYCSIvyzS3MpmmSe4iaWKCOHQ== 

通过抓包工具抓到了也不知道什么含义。

Http的风险?

  • 数据明文传输,可被嗅探
  • 可被中间人工具,网络劫持

Https的工作原理?

Https使用了对称加密,非对称加密,以及认证。 HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段,关于证书的认证,首次下载服务器证书的时候会像第三方机构进行认证,后续使用本地已经认证好的证书。

1、客户端发起Https请求,服务器返回自身的https证书和公钥;

2、客户端验证证书是否有效,证书一般有颁发机构,如果能认证颁发机构认证的证书有效即认为有效证书。

3、客户端随机生成公钥私钥对,然后再生成一个随机数;

4、客户端通过服务器的公钥再进行加密;

5、服务端收到了客户端用自己的公钥加密的内容,使用私钥解密;拿到随机数。

6、后续的数据传输都使用随机数进行加解密;

后续服务端使用客户端的公钥加密,客户端使用自己的私钥解密; 客户端使用服务器的公钥加密,服务器使用自己的私钥解密; 同时传输的内容也通过了随机数进行加密;

Q&A

Q: **HTTPS 为什么安全?**A: 因为 HTTPS 保证了传输安全,防止传输过程被监听、防止数据被窃取,可以确认网站的真实性。Q: **HTTPS 的传输过程是怎样的?**A: 客户端发起 HTTPS 请求,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。Q: **为什么需要证书?**A: 防止”中间人“攻击,同时可以为网站提供身份证明。Q: **使用 HTTPS 会被抓包吗?**A: 会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。

网安零基础入门
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,有需要的小伙伴,可以【扫下方二维码】免费领取:


http://www.ppmy.cn/news/12692.html

相关文章

【JavaEE初阶】第二节.进程篇

文章目录 前言 一、操作系统 二、进程 2.1 进程的概念 2.2 进程的管理​​​​​​​​​​​​​​ 2.3 PCB 2.3.1 PCB里面的一些属性 2.3.2 进程的调度 2.3.3 进程的虚拟地址空间 2.3.4 进程间通信 总结 前言 本节内容我们继续对JavaEE的有关内容进行学习,…

[JavaEE]阻塞队列

专栏简介: JavaEE从入门到进阶 题目来源: leetcode,牛客,剑指offer. 创作目标: 记录学习JavaEE学习历程 希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长. 学历代表过去,能力代表现在,学习能力代表未来! 目录: 1.阻塞队列的概念 2.标准库中的阻塞队列 3.生产者…

nacos在国产银河麒麟系统飞腾CPU部署安装

1 jdk安装 1.1 首先查看系统是否自带jdk java -version1.2 卸载系统自带的openjdk apt-get remove openjdk*或者先查看安装的java:dpkg -l | grep java,再根据对应java的package卸载java:sudo apt-get remove ca-certificates-java1.3 安装…

OpenCV(12)-OpenCV的机器学习

OpenCV的机器学习 基本概念 计算机视觉是机器学习的一种应用,而且是最有价的应用 人脸识别 哈尔(Haar)级联方法深度学习方法(DNN) Haar人脸识别方法 哈尔(Haar)级联方法是专门为解决人脸识别而推出的,在深度学习还不流行时,哈尔已可以商…

35岁高龄程序员的 4 条出路,提早布局,避免出局!

目录 一、40岁回首往事:自己竟没有任何核心优势二、公司遇到危机时40岁大龄程序员会怎么样三、适合大龄程序员的几条职业发展路线四、最后的寄语 这篇文章,给大家聊聊Java工程师的职业发展规划的一些思考,同时也给不少20多岁、30多岁&#…

CodeForces 438D The Child and Sequence(线段树区间取模)

CodeForces 438D The Child and Sequence 洛谷 The Child and Sequence 题目大意 给出一个长度为nnn的非负整数序列aaa,需要支持以下操作: 给出l,rl,rl,r,求l,rl,rl,r之间的数的和给出l,r,xl,r,xl,r,x,将l,rl,rl,r之间的每个a…

【JavaEE】基于TCP的客户端服务器程序

✨哈喽,进来的小伙伴们,你们好耶!✨ 🛰️🛰️系列专栏:【JavaEE】 ✈️✈️本篇内容:基于TCP的客户端服务器程序。 🚀🚀代码存放仓库gitee:JavaEE初阶代码存放! ⛵⛵作者…

《Buildozer打包实战指南》第二节 安装Kivy和Buildozer

目录 2.1 安装Kivy 2.2 安装Buildozer 2.3 验证安装 2.4 一点建议 Python是Ubuntu系统中自带的,我们在桌面上右键打开终端,然后输入python3 --version就可以看到Ubuntu系统中的Python版本了。 可以看到,Python的版本是3.10.6。虽然Python…