搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
菜鸟追梦旅行
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
python 用户信息管理系统【各个函数剖析 + 完整代码 零基础适用篇】_简易版用户管理系统python
2
Qt隐藏标题栏,鼠标实现窗口右下角放缩窗口_qdialog隐藏标题栏
3
Qt源代码研究-------QMainWindow
4
mysql实战——Mysql8.0高可用之双主+keepalived_keepalived 都设置为backup
5
git安装教程 Windows 附安装包链接
6
CleanMyMac X详细测评 CleanMyMac X常见问题 CleanMyMac X有必要买吗 cleanmymac和腾讯柠檬哪个好
7
最强整理:对Android开发的现状和未来发展的思考,算法太TM重要了_android 应用层开发,算法重要吗
8
YAML语法记录
9
HarmonyOS实战开发-静态库(SDK)的创建和使用_harmonyos sdk
10
Java二进制以及TXT文件操作_java 二进制转换成txt
当前位置:
article
> 正文
HTTPS 的实现原理
作者:菜鸟追梦旅行 | 2024-05-27 19:55:26
赞
踩
HTTPS 的实现原理
HTTPS 的实现原理
HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。
HTTPS的整体过程分为
证书验证
和
数据传输
阶段,具体的交互过程如下:
① 证书验证阶段
1. 浏览器发起 HTTPS 请求
2. 服务端返回 HTTPS 证书
3. 客户端验证证书是否合法,如果不合法则提示告警
② 数据传输阶段
1. 当证书验证合法后,在本地生成随机数
2. 通过公钥加密随机数,并把加密后的随机数传输到服务端
3. 服务端通过私钥对随机数进行解密
4. 服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输
为什么数据传输是用对称加密?
首先,非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的;
另外,在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。
为什么需要 CA 认证机构颁发证书?
HTTP 协议被认为不安全是因为传输过程容易被监听者勾线监听、伪造服务器,而 HTTPS 协议主要解决的便是网络传输的安全性问题。
首先我们假设不存在认证机构,任何人都可以制作证书,这带来的安全风险便是经典的**“中间人攻击”** 问题。“中间人攻击”的具体过程如下:
过程原理:
1. 本地请求被劫持(如DNS劫持等),所有请求均发送到中间人的服务器
2. 中间人服务器返回中间人自己的证书
3. 客户端创建随机数,通过中间人证书的公钥对随机数加密后传送给中间人,然后凭随机数构造对称加密对传输内容进行加密传输
4. 中间人因为拥有客户端的随机数,可以通过对称加密算法进行内容解密
5. 中间人以客户端的请求内容再向正规网站发起请求
6. 因为中间人与服务器的通信过程是合法的,正规网站通过建立的安全通道返回加密后的数据
7. 中间人凭借与正规网站建立的对称加密算法对内容进行解密
8. 中间人通过与客户端建立的对称加密算法对正规内容返回的数据进行加密传输
9. 客户端通过与中间人建立的对称加密算法对返回结果数据进行解密
由于缺少对证书的验证,所以客户端虽然发起的是 HTTPS 请求,但客户端完全不知道自己的网络已被拦截,传输内容被中间人全部窃取。
浏览器是如何确保 CA 证书的合法性?
1. 证书包含什么信息?
* 颁发机构信息
* 公钥
* 公司信息
* 域名
* 有效期
* 指纹
* ......
2. 证书的合法性依据是什么?
首先,权威机构是要有认证的,不是随便一个机构都有资格颁发证书,不然也不叫做权威机构。另外,证书的可信性基于信任制,权威机构需要对其颁发的证书进行信用背书,只要是权威机构生成的证书,我们就认为是合法的。所以权威机构会对申请者的信息进行审核,不同等级的权威机构对审核的要求也不一样,于是证书也分为免费的、便宜的和贵的。
3. 浏览器如何验证证书的合法性?
浏览器发起 HTTPS 请求时,服务器会返回网站的 SSL 证书,浏览器需要对证书做以下验证:
1. 验证域名、有效期等信息是否正确。证书上都有包含这些信息,比较容易完成验证;
2. 判断证书来源是否合法。每份签发证书都可以根据验证链查找到对应的根证书,操作系统、浏览器会在本地存储权威机构的根证书,利用本地根证书可以对对应机构签发证书完成来源验证;
3. 判断证书是否被篡改。需要与 CA 服务器进行校验;
4. 判断证书是否已吊销。通过CRL(Certificate Revocation List 证书注销列表)和 OCSP(Online Certificate Status Protocol 在线证书状态协议)实现,其中 OCSP 可用于第3步中以减少与 CA 服务器的交互,提高验证效率
以上任意一步都满足的情况下浏览器才认为证书是合法的。
本地随机数被窃取怎么办?
证书验证是采用非对称加密实现,但是传输过程是采用对称加密,而其中对称加密算法中重要的随机数是由本地生成并且存储于本地的,HTTPS 如何保证随机数不会被窃取?
其实 HTTPS 并不包含对随机数的安全保证,HTTPS 保证的只是传输过程安全,而随机数存储于本地,本地的安全属于另一安全范畴,应对的措施有安装杀毒软件、反木马、浏览器升级修复漏洞等。
用了 HTTPS 会被抓包吗?
HTTPS 的数据是加密的,常规下抓包工具代理请求后抓到的包内容是加密状态,无法直接查看。
但是,正如前文所说,浏览器只会提示安全风险,如果用户授权仍然可以继续访问网站,完成请求。因此,只要客户端是我们自己的终端,我们授权的情况下,便可以组建中间人网络,而抓包工具便是作为中间人的代理。通常 HTTPS 抓包工具的使用方法是会生成一个证书,用户需要手动把证书安装到客户端中,然后终端发起的所有请求通过该证书完成与抓包工具的交互,然后抓包工具再转发请求到服务器,最后把服务器返回的结果在控制台输出后再返回给终端,从而完成整个请求的闭环。
既然 HTTPS 不能防抓包,那 HTTPS 有什么意义?
HTTPS 可以防止用户在不知情的情况下通信链路被监听,对于主动授信的抓包操作是不提供防护的,因为这个场景用户是已经对风险知情。要防止被抓包,需要采用应用级的安全防护,例如采用私有的对称加密,同时做好移动端的防反编译加固,防止本地算法被破解。
HTTPS 为什么安全?
因为 HTTPS 保证了传输安全,防止传输过程被监听、防止数据被窃取,可以确认网站的真实性。
HTTPS 的传输过程是怎样的?
客户端发起 HTTPS 请求,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。
为什么需要证书?
防止”中间人“攻击,同时可以为网站提供身份证明。
使用 HTTPS 会被抓包吗?
会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/633724
推荐阅读
article
http
、
http
s(
加密
解密
、签名
验签
、ca证书签发机构).看完十来篇文章的总结_基于
http
协议
...
加密
解密
对称
加密
加密
和
解密
的密钥是同一个.优点:
加密
速度快缺点: 密钥的
安全
问题.如果通过传输的方式传输密钥,那么和传...
赞
踩
article
HTTP
+
加密
+
认证
+ 完整性保护 =
HTTP
S(
HTTP
S 安全
通信
机制)_来此
加密
htt...
前言:
HTTP
加上
加密
处理和
认证
以及完整性保护后即是
HTTP
S如果在
HTTP
协议
通信
过程中使用未经
加密
的明文,比如...
赞
踩
article
面试官系列 -
https
真的
安全
吗
,
可以
抓包
吗
,
如何
防止
抓包
吗_
服务器
防止
被
抓包
...
SSL 由 Netscape 公司于1994年创建
,
它旨在通过Web创建
安全
的Internet通信。它是一种标准协议
,
用...
赞
踩
article
HTTPS
原理分析——带着疑问层层深入_
浏览器
如何
监听
ca
拔出...
首发地址 https://blog.leapmie.com/archives/418/
HTTPS
随着
HTTPS
建...
赞
踩
article
深入理解
HTTPS
工作原理,一文帮你搞懂
HTTPS
加密
、
解密
、验证及
数据传输
过程
_
ssl
具体...
在上述
过程
中,客户端在拿到服务器的公钥后,会生成一个随机码 (用 KEY 表示,这个 KEY 就是后续双方用于对称
加密
的...
赞
踩
article
HTTP
、
HTTP
S
加密
过程_
http
请求
加密
...
http
:超文本传输协议,是一个基于请求与响应,无状态无连接的,应用层的协议,常基于TCP/IP协议传输数据无状态:协议...
赞
踩
article
出现“
error
: failed
to
push
some
refs
to
‘
https
://
git
...
经过不断查看别人的博客,分析问题:发现本地库确实与远程库内容不相符合。昨天在演示如何删除远程库中的文件时,采用的是直接在...
赞
踩
article
git
push
出现
failed
to
push
some refs to ‘
https
://gi...
主要原因是
git
ee中的README.md文件不在本地代码目录中解决办法输入
git
pull --rebase orig...
赞
踩
article
解决办法:
git
错误 error: failed
to
push
some refs
to
‘htt...
问题描述:我对原本已经上传到远程仓库的项目最了更新,然后想再次使用
push
命令提交更新时发现;在
git
bash中键入 ...
赞
踩
article
http
:
server
gave
HTTP
response
to
HTTP
S client 分析...
这个错误信息表明 Docker 客户端在尝试通过
HTTP
S 协议连接到 Docker 仓库时,但是服务器却返回了一个 ...
赞
踩
article
Jenkins
拉取
git
lab
代码中报错:Failed
to
connect
to
reposit...
Jenkins
拉取
git
lab
代码中报错:**Failed
to
connect
to
reposi
to
ry
Comm...
赞
踩
article
nginx
配置
监听
443
端口
,
开启
ssl
协议
,
走
https
访问_
nginx
443
_
nginx
...
最近有个项目需要上线到浙政钉工作台
,
那边要求项目走
https
访问
,
但是服务器没有进行相应的
配置
一直都是走的 http...
赞
踩
article
记一次
JMeter
压测
HTTPS
性能
问题,2024年最新
一个
软件测试
程序员的面试心得...
如果希望施压机发挥最大
性能
,可以将 https.sessioncontext.shared 设为 true,这样所有线程...
赞
踩
article
这个
Charles
爬取
微信
小
程序
HTTPS
请求的技巧,我怎么没早点发现!_
charels
如何...
charles 实战!
抓取
微信
小
程序
https 请求数据_
charels
如何
抓取
微信
charels
如何
抓取
微信
...
赞
踩
article
查询
HTTPS
网站
TLS
版本
_查看网站
tls
版本
...
查询
HTTPS
网站
TLS
版本
_查看网站
tls
版本
查看网站
tls
版本
参考 检查网站的TL...
赞
踩
article
微信小程序
https
配置 IIS中开启
TLS1.2
_微信
开发者
工具
iis
对应的
tls
...
Windows 2008系统在IIS中开启
TLS1.2
1、绑定好证书2、运行regedit3、开启
TLS1.2
[HKEY...
赞
踩
article
微信小程序
Server
端环境配置(
SSL
,
Nginx
HTTPS
,
TLS
1.2
)详解教程_cen...
这篇文章主要介绍了微信小程序
Server
端环境配置详解(
SSL
,
Nginx
HTTPS
,
TLS
1.2
升级)的相关资...
赞
踩
article
疑难杂症篇(十四)--登陆“
https
://
kali
:8834/#/“出现“
Your
connect...
问题描述:在安装Nessus过程中,对Nessus进行初始化配置时,登陆"
https
://
kali
:8834/#/"时出...
赞
踩
article
解决
g
o
语言加载模块超时
https
://
pr
o
xy
.
g
o
lang.
o
rg i/
o
time
o
u...
g
o
语言加载模块超时_
pr
o
xy
.
g
o
lang.
o
rg time
o
ut
pr
o
xy
.
g
o
lang.
o
rg time
o
ut...
赞
踩
article
go
get安装时报错:
unrecognized
import
path
“
go
lang
.org/x...
问题安装包时,通过
go
get下载并安装gin软件包报错,提示
unrecognized
import
path
“
go
l...
赞
踩
相关标签
java
计算机网络
密码学
https
ssl
服务器
安全
网络协议
http
tcp/ip
git
github
jenkins
gitlab
nginx