HTTPS一定可靠吗?

news2024/11/24 1:14:08

HTTPS一定可靠吗?

  • 中间人伪装服务器
  • 首先我们先看看客户端是如何验证证书的?
    • 数字证书签发和验证流程
    • 客户端校验服务端数字证书的过程
  • 如何出现中间人伪装服务器成服务器的情况?
  • 避免该情况

中间人伪装服务器

在这里插入图片描述

  • 客户端向服务端发起HTTPS建立连接请求时,然后被"假基站"转发到了一个中间人服务器,接着中间人服务器向服务端发起HTTPS建立连接请求,然后客户端与中间人进行TLS握手,中加入与服务端进行TLS握手。
  • 在客户端与中间人进行TLS握手过程中,中间人会发送自己的公钥证书给客户端,客户端验证证书真伪,然后从证书中拿出公钥,根据随机算法生成一个随机数,用公钥加密后发送给中间人,中间人使用私钥解密,得到随机数,然后双方根据该随机数,生成对称加密密钥A,后续它们就使用该密钥来进行通信。
  • 在中间人与服务端进行TLS握手的过程中,服务端会发送从CA机构签发的公钥证书给中间人,中间人从证书拿到公钥,并生成一个随机数,用公钥加密后发送给服务端,服务端使用私钥解密,得到随机数,然后它们通过算法生成对称加密密钥B,之后它们就使用该密钥来通信。

而后续的通信中,中间人使用密钥A解密客户端的数据,然后使用密钥B加密数据后,发送给服务端,接着服务端发送响应后,中间人使用密钥B解密,然后使用密钥A加密,发送给客户端。

根据上面的情况所知,只要客户端识别出中间人给它发送的公钥是假的就可以了。

首先我们先看看客户端是如何验证证书的?

数字证书签发和验证流程

在这里插入图片描述

  1. 当服务端向CA机构申请证书的时候,CA签发证书的过程:
    首先CA会把持有者的公钥,用途,颁发者,有效时间等信息打成一个包,然后进行Hash加密,得到一个Hash值

  2. 然后CA会使用自己的私钥将该Hash值加密,生成Certificaet Signature,也就是CA对证书做了签名。

  3. 最后将Certificate Signature 添加在文件证书上,形成数字证书。

客户端校验服务端数字证书的过程

证书信任链
因为我们向CA申请的证书一般不是根证书签发的,而是由中间证书签发的。
所以当收到对方发送的证书时,发现该证书不是根证书,就无法根据本地已有的根证书的公钥去验证它是否可信,于是客户端去找那个中间证书(即该证书的颁发者),直到找到它根证书,然后查看该证书是否在本地有记录,如果有,则使用本地的公钥去验证它是否可信。

  1. 首先客户端会使用同样的Hash算法获取该证书(由对方发来的)的Hash值H1。
  2. 通常浏览器和操作系统中都有CA的公钥信息,浏览器收到证书后使用CA的公钥(浏览器或者操作系统存储的公钥)解密Certificate Signature内容,得到一个Hash值H2
  3. 最后比较H1和H2,如果值相同,则为可信赖的证书,否则则认为证书不可信。

如何出现中间人伪装服务器成服务器的情况?

根据上面的情况,我们来说一下,什么情况下会出现上面的情况。

1.当访问某个网站时,它的证书可能有问题,然后浏览器会弹出该证书存在问题,是否信任,如果我们点击信任的话,则之后我们的数据就已经被中间人"偷看"了。

2.自己的电脑被植入病毒,该病毒可能会植入中间人的根证书,这种情况下,当访问某些网站时,浏览器是不会弹出该证书存在问题的。

避免该情况

1.防止电脑被植入病毒。
2.一般HTTPS是单向认证,我们可以通过HTTPS双向认证避免这种问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169808.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你知道吗?python lxml 库也能用于操作 svg 图片

在大多数场景中,我们都用 lxml 库解析网页源码,但你是否知道,lxml 库也是可以操作 svg 图片的。我们可以使用 lxml 中的 etree 模块来解析 SVG 文件,然后使用 SVG 中的各种元素和属性来进行操作。 python lxml 库操作 svg 图片lxm…

传输层协议:TCP协议(上)——协议结构、主要特点以及应用场景

简介 传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传…

xubuntu系统偶发自动登出

项目场景: 系统:xubuntu-16.04.3-desktop 问题描述 使用xubuntu系统期间,在root用户下进行相关开发,突然系统会回到普通用户登录界面,需要输入密码进入到普通用户下   它会终止所有打开的应用程序和进程&#xff0…

【Vue组件通信方式】

文章目录前言一、父子组件通信1、父传子①使用props接收父组件传递的属性② 使用$attrs接收父组件未在 props 和 emits 中定义的属性和事件③使用 $parent获取父组件的信息2、子传父① 使用 $emit传递信息给父组件② 使用$refs获取子组件的属性和事件二、自定义事件&#xff1a…

独家丨DeepMind科学家、AlphaTensor一作解读背后的故事与实现细节

一直以来,DeepMind的Alpha系列工作,AlphaGo、AlphaStar等致力于棋类和游戏应用中战胜人类,而两个月前发布的AlphaTensor则把目标指向了科学计算领域,意在为矩阵乘法等基本计算任务自动设计更高效的经典算法,这一工作一…

Burpsuite超详细安装教程(附安装包)

写在开头 Burp Suite 是用于攻击web 应用程序的集成平台,包含了许多工具。Burp Suite为这些工具设计了许多接口,以加快攻击应用程序的过程。所有工具都共享一个请求,并能处理对应的HTTP 消息、持久性、认证、代理、日志、警报。 接下来我来…

软件测试面试经 | 双非院校,从外包到外企涨薪85%,他的涨薪秘籍全公开

本文为霍格沃兹测试开发学社优秀学员跳槽笔记,测试开发进阶学习文末加群。 本身是一所不入流的院校毕业的一名建工类专业的瓜娃子,至今记得当初是因为找工作被培训公司忽悠才加入到这个行业的,抱着做着试试的想法这一干在深圳就是6年&#xf…

excel替换技巧:如何将手机号码的部分数字变成星号

每个销售员经常会接触大量客户,会用小本本记下众多客户的信息,而手机号码就是其中重要的一项。为了保护客户隐私,在公开的信息里销售员需要把客户手机号码的部分数字变成星号。比如说,把客户A的手机号码15867852976修改成158****2…

SpringMvc源码分析(三) 请求执行过程之获取MethodHandler

1.请求是如何关联到DispatcherServlet的 DispatcherServlet是Servlet的实现,遵循Servlet生命周期的规则。 Servlet的生命周期即其出生到死亡的过程中分别会调用Servlet里的以下方法: 加载和实例化:可以参考SpringMvc源码分析一 init方法…

【JavaEE】博客前端

目录 一、列表页 1.1导航条 1.2主题区域 1.2.1个人信息框 1.2.2 内容区 二、登录页 三、详情页 一、列表页 整体布局如下: 1.1导航条 导航条分为三块,整体都设置id为导航栏,然后左右分为导航栏左和导航栏右。左边靠左,右边靠…

计算机视觉Computer Vision课程学习笔记四之Region and Edge Descriptions

第四章讲了区域和边界的描述 包括最佳区域评估方法,多物体识别,标签算法,斑点标记 以及矩评估的方法和优劣 Region Description Simple measurements on binary images • Use for recognition, etc. • Generate region descriptions whic…

Win10+CMake+VS2017编译OpenCV4.5.5

第一步:准备工作1 下载opencv4.5.5下载OpenCV4.5.5,并解压到自己新建文件夹opencv下。2 下载opencv_contrib4.5.5下载opencv_contrib4.5.5,解压到上面的opencv文件夹中,并在opencv文件夹中新建一个build文件夹,用来存放…

第一天总结 之 用户管理界面的实现 之 添加操作 的实现

添加操作的实现 明确页面的跳转 找到 admin_adduser.jsp中 form表单 前端的添加页面展示 在表单中输入 信息 点击注册跳转到 from表单对应的 action地址 UserAddServlet 创建UserAddServlet 从前端的form表单中获取值 然后在service层 进行 业务操作 即将这些属性存放在 Ob…

私有部署与SaaS模式网站有什么区别

什么是SaaS SaaS 是 Software-as-a-Service 的简称,它是一种通过互联网提供软件的模式。 以官网为例,SaaS订阅的网站通常统一部署在SaaS提供商的云服务器上。用户通过自己的实际需求订购对应的网站系统服务,按订购的系统功能、使用流量/存储…

Word处理控件Aspose.Words功能演示:用Java从Word文档中提取文本

Aspose.Words For .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外,API支持所有流行的Word…

凭记忆错题记录-

3、某种部件用在2000合计算机系统中,运行工作1000小时后,其中有4台计算机的这种部件失效,则该部件的千小时可靠性度R为()。 A.0.990 B.0.992 C.0.996 D.0.998 【参考答案】D  8、9、X509数字证书标准推荐使用的密码算法是(8),而…

计算机视觉Computer Vision课程学习笔记八之Recognition识别 low level

第八章讲了全局图像识别的方法 距离 空间特征 简单的分类模型 Recognition (low level / global matching) Task – from a description of the image in terms of “good” features (not just blobs) extract a meaning • Detect • Classify • Etc. • Techniques – Te…

C++动态规划超详细总结

动态规划首先来介绍一下动态规划,但我不想用过于官方的语言来介绍。动态规划是一种思想,它常用于最优解问题(即所有问题包括所有子问题的解为最优解),它有点像递推,是在已知问题的基础上解决其他问题。这种…

【openWrt】安装后进行定制

修改openWrt管理后台默认端口vim /etc/config/uhttpd修改如下图内容然后重启uhttpd服务即可生效etc/init.d/uhttpd restart修改openWrt软件包源可以在openwrt后台改也可以在/etc/opkg/distfeeds.conf直接改vim /etc/opkg/distfeeds.conf配置如下src/gz handsomemod_core https:…

通讯录的实现

问天下谁与争锋,唯我傲视苍穹 此句赠与在看文章的你 该通讯录使用的语言是C语言,涉及的知识有动态开辟内存,和文件内存管理。 动态开辟内存是用来不断给通讯录增加容量的 文件管理是用来将通讯录的信息存储到文件里。 我会先从简单的写起&am…