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

(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或者公钥基础结构。

参考:https://blog.csdn.net/baidu_36649389/article/details/53240579

证书有效性验证、根证书相关推荐

  1. SSL证书的根证书和中间根证书的区别

    SSL证书的根证书和中间根证书的区别. 什么是根证书? 根证书是指CA机构颁发SSL证书的核心,是信任链的起始点. 根证书是浏览器是否对SSL证书每个浏览器都有一个根证书库?有的浏览器是采用自主的根证 ...

  2. 根证书和中间根证书之间有什么区别?

    随着SSL证书的广泛应用,申请SSL证书的人也越来越多,但是很多使用SSL证书的用户其实并不太了解SSL证书.他们仅仅是因为要把站点从HTTP转换到HTTPS而申请使用SSL证书,而最终用户也只是获取 ...

  3. SSL数字证书之CA根证书、CA中间证书和SSL证书

    [前言] 说一下大背景吧,我们的一个后台服务需要部署在一个没法上外网的环境,但是我们的后台服务需要访问七牛云进行对象存储,于是乎,需要一个代理来完成这个访问,我门采用nginx七层来做这个代理,因为七 ...

  4. 卸载计算机安全证书,如何卸载ssl证书_卸载根证书的操作指南_什么是SSL卸载,SSL卸载优点有哪些? - 沃通SSL证书...

    ssl卸载 2019-10-31 什么是SSL卸载?今天我们将讨论一个经常出现的问题,对于那些没有IT背景的人来说,这可能会显得特别陌生:什么是SSL卸载?我们将快速概述一下SSL卸载意味着什么,为什 ...

  5. openssl命令生成根证书和使用根证书签名工作证书

    建立根证书流程如下: //生成私钥,产生CARoot.key文件,需要输入私钥保护口令 openssl genrsa -des3 -out CARoot.key 2048 //生成证书请求,需要输入C ...

  6. java 创建根证书_创建根证书及其子证书

    "CN=***" ,不然证书就和域名不一致了,至于其他就是文件名,无所谓了! 1. 使用MakeCert.exe创建一个自签名的根证书 makecert -n "CN=w ...

  7. CA验证数字证书的有效性

    公钥机制面临的问题-假冒身份发布公钥 采用公钥机制进行加密传输面临的一个问题是公钥的发布.任何一个用户都可以通过网络向所有人发布伪造的公钥,如果某个用户假冒真正用户的名义发布一个公钥,在该假冒者被揭穿 ...

  8. 根证书和中间证书的区别

    什么是证书链? 在进一步讨论之前,我们需要先引入证书链的概念.提一个问题:您的浏览器如何知道是否应该信任网站的SSL证书? 受信任的根的任何下级证书都是受信任的.这在技术层面上是如何工作的呢? 当你访 ...

  9. https:浏览器如何验证数字证书

    浏览器和服务器建立https连接的过程中,浏览器首先会向服务器请求数字证书,之后浏览器要做的第一件事情就是验证数字证书: 验证数字证书的有效期 验证数字证书是否被吊销 验证数字证书是否是合法CA机构颁 ...

  10. 什么是根证书和中间证书(中级证书)?

    什么是根证书和中间证书(中级证书)? 随着SSL证书的广泛应用,申请SSL证书的人也越来越多,但是很多使用SSL证书的用户其实并不太了解SSL证书.他们仅仅是因为要把站点从HTTP转换到HTTPS而申 ...

最新文章

  1. locust入门:单机使用locust运行压力测试
  2. pix怎么抚养另一只猫_在工作和抚养两个孩子的同时,我如何在一年内获得第二学位并获得了5个开发人员认证...
  3. 数据结构与算法:13 字符串与整数集合
  4. Flutter底部导航栏的实现
  5. Pair Testing
  6. 阿里技术嘉年华-aDev内容感悟
  7. python 线性回归 技术方案亮点_基于Python的线性回归实战
  8. 最全CSS各种布局详解
  9. 是否可以改变 宏的值_给女人的建议:当父母不同意你的男朋友,可以尝试六个方法...
  10. 分隔和截断字符串, boost string algorithm library中的split和trim
  11. 信息学奥赛一本通 1164:digit函数
  12. java怎么判断按钮是否被点击_怎么判断肌肉训练后是否已经恢复
  13. PostgreSQL 备库apply延迟原理分析与诊断
  14. python机器学习库sklearn——模型评估
  15. linux vscode设置终端字体(要求等宽字体)
  16. c语言乐谱编辑软件怎么用的,雅乐简谱这个软件怎么使用?
  17. 误用分区助手的沉痛教训
  18. html自动验证邮件地址格式,JavaScript表单验证和邮箱格式验证的方法
  19. js“弹出对话框”和“弹出窗口”详解
  20. 揭秘Google排名的60个因素

热门文章

  1. SAP汇率转换函数[BAPI_EXCHANGERATE_GETDETAIL]
  2. 互联网公司常用架构模式梳理
  3. 工商银行网银U盾在win7 64位操作系统无法使用的问题
  4. 重磅!!毕业将近,论文免费查重工具任你选,非常值得收藏!
  5. 普及1080i和1080p的区别
  6. 2054339-01-2,N-Boc-N-bis(PEG2-acid)它可以在活化剂(如EDC或HATU)存在下与伯氨基反应
  7. hr面试性格测试30题_HR经典面试30题
  8. 【R_绘图】绘图字体设为Times New Roman
  9. 转载:日本动漫发展史(新浪网)
  10. 计算机按键去抖动的方式,机械按键如何去处理按键抖动的问题