数字证书的有效性验证

本文介绍了数字证书的有效性验证,包括有效期验证、颁发根证书验证和CRL验证。有效期验证确保时间在证书起始和结束日期之间。颁发根证书验证使用根证书公钥验证证书签名,通常涉及证书链和受信任的根证书列表。CRL验证通过CRL分发点地址下载并验证证书状态,可能包括全量、增量和分段CRL,以及OCSP在线查询。
摘要由CSDN通过智能技术生成

最近在做数字证书有效性验证的接口,主要是从数字证书的有效期、颁发根证书和CRL进行验证,下面我就从这几个方面来说数字证书的有效性验证。

一、有效期

证书的有效期验证这个比较简单,就是使用时间在必须在证书起始和结束日期之间才有效,通过解析X.509对象很容易获取起止时间,判断证书有效期代码如下:

 
 
 
        /// <summary> /// 有效期验证 /// </summary> /// <param name="cert"></param> /// <returns></returns> public static bool CheckDate( string cert) { byte [] bt = Convert.FromBase64String(cert); System.Security.Cryptography.X509Certificates.X509Certificate2 x509 = new System.Security.Cryptography.X509Certificates.X509Certificate2(bt); string date = x509.GetExpirationDateString(); DateTime dtex = Convert.ToDateTime(date); DateTime dtnow = DateTime.Now; DateTime dteff = Convert.ToDateTime(x509.GetEffectiveDateString()); if (dteff < dtnow && dtnow < dtex) { return true ; } return false ; }

二、颁发根证书

每个数字证书都有颁发根证书的签名,验证证书就是用根证书公钥来验证证书颁发者签名。首先,必须要找到数字证书的颁发根证书,Windows本身集成一些权威的受信任的根证书颁发机构,如VeriSign等,如果不在受信任的证书列表,我们打开证书会显示“Windows 没有足够信息,不能验证该证书”,当然我们可以把根证书加到受信任的根证书列表,这样证书就可以显示正常。

一般带证书链的数字证书中会包含证书颁发机构颁发者,逐级验证到最顶级根证书,每一级都用上级颁发根证书验证证书签名,直到证书颁发者和使用者一样自己可以验证自己通过。根证书的基本约束会不一样,Subject Type=CA代表可以签发证书,而一般的用户证书为Subject Type=End Entity,为终端实体不能再签发证书。

三、CRL验证

CRL是经CA签名的证书作废列表,用于做证书冻结和撤销时对证书有效性状态控制。一般数字证书中都有 CRL分发点地址,提供了HTTP和LDAP方式访问。通过BouncyCastle库解析X509证书的扩展项我们可以获取到CRL地址,然后使用相应方式下载CRL进行验证。

 
 
 
获取数字证书CRL
1 /**/ /// <summary> 2 /// 获取X.509证书中的CRL地址 3 /// </summary> 4 /// <param name="cert"></param> 5 /// <returns> 6 /// CRL路径(先返回http格式路径,然后再是ldap) 7 /// </returns>  8 public static string GetCrlPath( string cert) 9 ... { 10 string crl = string.Empty;
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值