证书有效性验证、根证书

来源:证书有效性验证、根证书 - 程序员大本营

   一、   数字证书的有效性验证主要从三个方面:

      (1)数字证书有效期验证
      (2)根证书验证
      (3)CRL验证
  1、数字证书有效期验证
        就是说证书的使用时间要在起始时间和结束时间之内。通过解析证书很容易得到证书的有效期

  2、根证书验证
        先来理解一下什么是根证书?
        普通的证书一般包括三部分:用户信息,用户公钥,以及CA签名
        那么我们要验证这张证书就需要验证CA签名的真伪。那么就需要CA公钥。而CA公钥存在于另外一张证书(称这张证书是对普通证书签名的证书)中。因此我们又需要验证这另外一张证书的真伪。因此又需要验证另另外证书(称这张证书是对另外一张证书签名的证书)的真伪。依次往下回溯,就得到一条证书链。那么这张证书链从哪里结束呢?就是在根证书结束(即验证到根证书结束)。根证书是个很特别的证书,它是CA中心自己给自己签名的证书(即这张证书是用CA公钥对这张证书进行签名)。信任这张证书,就代表信任这张证书下的证书链。
        所有用户在使用自己的证书之前必须先下载根证书。
       所谓根证书验证就是:用根证书公钥来验证该证书的颁发者签名。所以首先必须要有根证书,并且根证书必须在受信任的证书 列表(即信任域)。

 3、CRL验证
       CRL是经过CA签名的证书作废列表,用于证书冻结和撤销。一般来说证书中有CRL地址,供HTTP或者LDAP方式访问,通过解析可得到CRL地址,然后下载CRL进行验证。
     并且证书中有CRL生效日期以及下次更新的日期,因此CRL是自动更新的,因此会有延迟性。
     于是呢,还有另外一种方式OSCP证书状态在线查询,可以即时的查询证书状态。
两种证书状态查询方式的比较:

二、https证书有效性验证引发的安全问题

        如果用户手机中安装了一个恶意证书,那么就可以通过中间人攻击的方式进行窃听用户通信以及修改request(请求)或者response(答复,响应)中的数据。

       手机银行中间人攻击过程:

     1 、客户端在启动时,传输数据之前需要客户端与服务端之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。

     2 、中间人在此过程中将客户端请求服务器的握手信息拦截后,模拟客户端请求给服务器(将自己支持的一套加密规则发送给服务器),服务器会从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给客户端。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。

     3 、而此时中间人会拦截下服务端返回给客户端的证书信息,并替换成自己的证书信息。

     4、 客户端得到中间人的response后,会选择以中间人的证书进行加密数据传输。

     5 、中间人在得到客户端的请求数据后,以自己的证书进行解密。

     6 、在经过窃听或者是修改请求数据后,再模拟客户端加密请求数据传给服务端。就此完成整个中间人攻击的过程。

     以fiddler工具模拟中间人攻击为例:

          1、 首先在手机中装入fiddler根证书:

                 导出fiddler的根证书;将fiddler根证书放入手机的SD卡中,然后在手机设置-安全中选择从SD卡中安装证书;成功安装fiddler根证书到手机上。

         2 、在PC端打开fiddler,将手机通信代理到PC端fiddler所监听的端口上(可以在wifi中的高级设置中设置代理),这样手机银行的所有通信均会被fiddler监听到。

        3 、启动手机银行客户端,会在fiddler中查看到所有请求的明文数据,并且可以进行修改后转发,成功将https加密绕过。

         防护办法:

       使用CA机构颁发证书的方式可行,但是如果与实际情况相结合来看的话,时间和成本太高,所以目前很少有用此办法来做。由于手机银行服务器其实是固定的,所以证书也是固定的,可以使用“证书或公钥锁定”的办法来防护证书有效性未作验证的问题。

        具体实现:

       1 公钥锁定

       将证书公钥写入客户端apk中,https通信时检查服务端传输时证书公钥与apk中是否一致。

       2 证书锁定:

         即为客户端颁发公钥证书存放在手机客户端中,在https通信时,在客户端代码中固定去取证书信息,不是从服务端中获取。

三、根证书

      1、定义

       根证书是指CA机构颁发SSL证书的核心,是信任链的起始点。根证书是浏览器是否对SSL证书每个浏览器都有一个根证书库,有的浏览器是采用自主的根证书库,而一些浏览器则采取第三方的根证书库。而根证书库是下载客户端浏览器时预先加载根证书的合集。因此根证书是十分重要的,因为它可确保浏览器自动信任已使用私钥签名的SSL证书。受信任的根证书是属于证书颁发机构(CA),而CA机构是验证和颁发SSL证书的组织机构。

      2、什么是证书链?

         浏览器是如何鉴定信任网站的SSL证书?其实当客户端访问服务器时,浏览器会查看SSL证书并执行快速验证SSL证书的真实性。

       浏览器鉴定SSL证书身份验证的操作是根据证书链的内容。那么证书链是什么?

       用户在获取SSL证书之前,首先要生成证书签名请求(CSR)和私钥。在最简单的迭代中,用户将生成的CSR发生到证书颁发机构,然后使用CA机构的根证书的私钥签署用户的SSL证书,并将SSL证书发回给用户。

       当浏览器检测到SSL证书时,就会查看证书是由其中一个受信任的根证书签名(使用root的私钥签名)。由于浏览器信任root,所以浏览器也信任根证书签名的任何证书。

       而证书链是由两个环节组成—信任锚(CA 证书)环节和已签名证书环节。信任锚证书CA 环节可以对中间证书签名;中间证书的所有者可以用自己的私钥对另一个证书签名。这两者结合就构成了证书链。

     3、什么是中间证书?

         证书颁发机构(CA)不会直接从根目录颁发服务器证书(即SSL证书),因为这种行为是十分危险的,因为一旦发生错误颁发或者需要撤销root,则使用root签名的每个证书都会被撤销信任。

         因此,为了避免这种风险发生,CA机构一般会引用中间根。CA机构使用其私钥对中间根进行签名,使浏览器信任中间根。然后CA机构使用中间根证书的私钥来签署用户申请的SSL证书。这种中间根的形式可以重复多次,即使用中间根签署另一个中间件,然后CA机构通过中间件签署SSL证书。

      这是证书链的可视化过程,从上述例子可看出,CA机构只需要使用一个中间体来保持简单的操作,但其实真正的证书链通常要复杂的多。

     4、数字签名有什么作用?

       当根证书以数字方式签署中间证书时,就会将部分信任转移到中间证书。因为签名是直接来源于收信人的根证书的私钥,因此它会自动受信任。

       当浏览器或其他客户端检测到服务端的SSL证书,就会收到证书本身或与证书相关联的公钥。然后通过公钥,解锁数字签名,查看是由哪家企业签署了证书。即当客户端浏览器访问网站时,会对服务器用户的SSL证书进行身份验证,通过公钥来解锁加密的签名,解锁的签名就会随着签署的证书,反馈到浏览器信任的根证书库中。

      如果解锁的签名链接是不在浏览器信任的根证书库中,浏览器就会对该证书显示不安全。

     5、根证书CA和中间根CA的区别?

       根证书CA是拥有一个或者多个受信任根的证书颁发机构,即CA机构已扎根在主要浏览器的信任库中。而中间根CA或子CA是颁发中间根的证书颁发机构,他们不一定在浏览器的信任库中有根证书,而是将他们的中间根链接回收到受信任的第三方根,这种就被称为交叉签名。

       所以有一些CA机构颁发的证书并不是直接从他们的根源发出的,而是通过中间根签署证书来加强安全层,这有助于减少发生错误或安全事件的机率。如果撤销中间根,而不是撤销根证书以及按扩展名签署的证书,这种做法会导致中间根签发的证书不受信任。

       其实目前就有一件经典的案例,就是谷歌和其他主流的浏览器都取消对赛门铁克品牌的SSL证书。据悉,赛门铁克的SSL证书目前已颁发了数百万,取消对其的信任似乎是一件艰巨的项目。但在实际中,这是一项非常简单的工作,因为只需要在浏览器的根证书库中删除Symantec CA的所有根就可以。

    6、链式根和单一根之间的区别?

       单一根是由CA拥有的,可直接颁发证书,可以让部署证书的操作步骤变得更加简单。而链式根是Sub CA用于颁发证书的内容,是一个中间证书,但是因为中间根CA没有自己受信任的证书,必须链接到第三方受信任的CA。

      区别具体如下:

       链式根需要比较复杂的安装方法,因为中间根需要加载到托管证书的每个服务器和应用程序。链式根需要受到链接的CA支配,因为他们无法控制root用户,一旦root CA停业,他们也会收到巨大的牵连。根证书和中间证书过期的话,中间根必须要在根证书之前,这样就会增加工作难度。

      最后,以上所提到的证书颁发机构、证书链和加密签名的信任根证书,其实本质上都是PKI或者公钥基础结构。

参考:数字证书有效性验证_鱼虾一整碗的博客-CSDN博客_数字证书有效性验证 

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

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

相关文章

BAT全球扩张AI路线图:百度早于谷歌,腾讯投资最多

来源:网络大数据CB Insights的最新报告挖掘BAT的AI相关专利记录、投资和收益等,全方位描绘了BAT的AI策略。报告显示,百度在AI领域处于领先地位。BAT分别着重自动驾驶、智慧城市和医疗AI,在政府的大力支持下,BAT正在向全…

汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序

参考:http://blog.sina.com.cn/s/blog_171daf8e00102xclx.html 汇编语言实验答案 (王爽):https://wenku.baidu.com/view/a1cd7c6c1fb91a37f111f18583d049649b660ede.html 一。将下面的程序编译连接,用Debug加载、跟踪,然后回答问…

RestTemplate 最详解

目录 RestTemplate 简单使用 创建 RestTemplate接口调用一些其他设置简单总结公众号推荐在项目中,当我们需要远程调用一个 HTTP 接口时,我们经常会用到 RestTemplate 这个类。这个类是 Spring 框架提供的一个工具类。Spring 官网对它的介绍如下&#xf…

Gartner预计2018年全球人工智能商业价值将达到1.2万亿美元

来源:亿欧根据全球领先的信息技术研究与顾问公司Gartner的预测,人工智能(AI)产生的全球商业价值预计将在2018年达到1.2万亿美元,比2017年增长70%。此外,Gartner预计到2022年,人工智能衍生的商业…

王爽 汇编语言第三版 问题 7.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)

问题 7.9: 将 datasg 段中前 4 个字母变成大写 汇编代码: assume cs:codesg,ss:stacksg,ds:datasgstacksg segmentdb 0,0,0,0,0,0,0,0 stacksg endsdatasg segmentdb 1. display db 2. brows db 3. replace db 4. modify datas…

消费机器人今年爆发!四大品类瓜分百亿蛋糕

来源:智东西摘要:就扫地机器人、智能音箱、民用机器人和智能服务机器人的零售数据出发,盘点消费级机器人2018年的市场潜力。近两年,人工智能技术的迅猛发展。特别是视听觉语义理解、自然语言处理、神经网络、情感识别算法等的发展…

scrapy学习笔记(二)进阶使用

From:https://www.imooc.com/article/21839 scrapy提升篇之配置:https://segmentfault.com/a/1190000009321902 前面我写了一篇《scrapy快速入门》,简单介绍了一点scrapy的知识。这次就来介绍一些scrapy的进阶知识,做一些真正有用…

王爽 汇编语言第三版 第7章 --- 更灵活的定位内存地址的方法(可以理解为 数组形式的内存定位)

汇编语言(第三版)王爽著 的十二个实验:https://blog.csdn.net/OrangeHap/article/details/89791064 大小端 字节对齐 对于 arm,intel 这种 x86 构架的复杂指令 CPU,整数在内存中是倒着存放的,低地址放低位&…

从文本分类问题中的特征词选择算法追踪如何将数学知识,数学理论迁移到实际工程中去...

博文转载请注明作者和出处(作者:finallyliuyu :出处博客园) 附:《卡方特征词选择算法》 《DF特征词选择算法》 一.数学背景 将数学知识、数学理论以及数学思想迁移到实际工程问题中,经常会促进工程问题的圆…

裁掉杰森伯恩,招揽人工智能,AI间谍厉害在哪?

来源:智能相对论 作者: 岳文纶摘要:CIA宣布,计划用人工智能取代间谍。其技术开发副主任Dawn Meyerriecks表示,CIA正在适应新的情形,其主要对手是一台机器,而不是一名外国间谍。间谍&#xff0…

一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务...

前面的四篇文章演示ORM的一些常规操作与配置,通过前面的文章,应用开发人员要可以使用ORM开发出简单的应用,但是,ORM也不是万能钥匙,在业务应用中,还有很多是ORM解决不了的问题,对于这些问题&…

英特尔详解5G将如何助力VR的未来发展

来源:亿欧智库摘要:英特尔中国研究院通过重点研究通信和计算融合的方式,解释了5G在面对巨大数据洪流时数据处理和传输的方式,通过边缘计算的新方法,使VR达到传输要求。打造一个高效的通信和计算系统,通往我…

王爽 汇编语言第三版 第8章( 寻址方式 ) --- 数据处理的两个问题

第八章 数据处理的两个基本问题 8.6 综合应用 示例代码 1: assume cs:codesg,ds:datasgdatasg segmentdb 1024 dup (0) datasg endscodesg segmentstart:mov ax,datasgmov ds,axmov bx,60h ; 确定记录地址 ds:bxmov word ptr [bx0ch],38 ;…

综述AI未来:神经科学启发的类脑计算

来源:运筹OR帷幄 作者:周岩摘要:脑科学是一门实践性很强的交叉学科,包含了神经科学,医学,数学,计算科学等多门学科。随着近几年深度学习的迅速发展,人工智能成为了无论学术界还是互…

[翻译]Wine完全使用指南——从基本到高级[转]

转载自 : http://forum.ubuntu.org.cn/viewtopic.php?t72933为了回应最近网友的一些普遍问题,特此作以下说明: 1、如果发现wine的注册表没有相应的键值,要自己创建。有时候用命令不行的话,只能手动一个个添加。 2、wine还是一个…

Flask --- 框架快速入门

From:http://docs.jinkan.org/docs/flask/quickstart.html Flask 用户指南:http://docs.jinkan.org/docs/flask/index.html w3cschool.cn 的 Flask 教程:https://www.w3cschool.cn/flask/ 《Flask Web开发:基于Python的Web应用…

AI与基因科学的对话:从“人工智能”到“动物智能”

来源:亿欧网有人的地方就有江湖,巨头们一次次的“技术战役”就是现代江湖的样子。各家企业牢牢把握住科技就是第一生产力的关键,不断的较量平台、技术、场景、生态等多方面的综合实力,你方唱罢我登场好不热闹。在我们的认知中&…

顺序程序设计03 - 零基础入门学习C语言09

第三章:顺序程序设计03 让编程改变世界 Change the world by program 题目:输入三角形的三边长,求三角形面积。 已知三角形的三边长a,b,c,则该三角形的面积公式为: [caption id"attachment_64" align"a…

王爽 汇编语言第三版 第9章 转移指令的原理

第九章 转移指令的原理 汇编代码: assume cs:codesgcodesg segments: mov ax,bx ; mov ax,bx 的机器码占两个字节mov si, offset smov di, offset s0mov ax, cs:[si]mov cs:[di], axs0:nop ; nop 机器码占一个字节nopmov ax, 4c00hint 21h codesg ends end s 9…