zoukankan      html  css  js  c++  java
  • 验证数字证书的有效性

    #此文来自于知乎的匿名用户

    要想验证证书是否有效,要检查三点:


    1. 验证证书是否在有效期内。

    证书中会包含证书的有效期的起始时间和结束时间,取一个时间点去比较就好了。

    关键问题是如何保证取到的时间点是可信的,这就是另外一个话题了。 

    2. 验证证书是否被吊销了。

    被吊销的证书是无效的。

    验证吊销有CRL和OCSP两种方法。

    CRL即证书吊销列表。证书被吊销后会被记录在CRL中,CA会定期发布CRL。应用程序可以依靠CRL来检查证书是否被吊销了。

    CRL有两个缺点,一是有可能会很大,下载很麻烦。针对这种情况有增量CRL这种方案。 二是有滞后性,就算证书被吊销了,应用也只能等到发布最新的CRL后才能知道。增量CRL也能解决一部分问题,但没有彻底解决。

    OCSP是在线证书状态检查协议。应用按照标准发送一个请求,对某张证书进行查询,之后服务器返回证书状态。OCSP可以认为是即时的(实际实现中可能会有一定延迟),所以没有CRL的缺点。不过对于一般的应用来说,实现OCSP还是有些难度的。


    3. 验证证书是否是上级CA签发的。

    每一张证书都是由上级CA证书签发的,上级CA证书可能还有上级,最后会找到根证书。根证书即自签证书,自己签自己。 当你验证一张证书是否是由上级CA证书签发的时候,你必须有这张上级CA证书。通常这张证书会内置在浏览器或者是操作系统中,有些场景下应用系统也会保留。

    --------- 以上三点,只要有一个没通过,这张证书就是无效的,不该信任。 在实际场景中会衍生出一些问题,

    比如: 1. 严格来说,证书状态验证“应该”是个“递归”过程:验证完一张证书之后还得验证上级CA证书,一直验到根。这个开销太巨大了,所以应用系统大多会做一些取舍。当然乱取舍的时候就有可能出问题。 2. 根证书的可信程度。根证书是整个信任体系的“根”,只有根证书可信,下级证书才可信。

  • 相关阅读:
    Java字符串比较
    Java中定义不了可变长数组怎么办---集合 泛型
    Java后台读取excel表格返回至Web前端
    JAVA中Stringbuffer的append( )方法
    Java操作Excel中HSSFCell.CELL_TYPE_STRING、BOOLEAN、NUMERIC无定义解决方法
    数据结构---公交线路提示系统05(内附读取表格+迪杰斯特拉算法Java代码)
    .getCellType()的几种类型值
    数据结构---公交线路提示系统04
    数据结构---公交线路提示系统03
    转载一篇较为详细的caffe-ssd编译环境的搭建
  • 原文地址:https://www.cnblogs.com/ronyjay/p/6269981.html
Copyright © 2011-2022 走看看