`
kiki1120
  • 浏览: 315774 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

对证书的CRL进行验证

阅读更多
package com.example.certificate;

import java.io.FileInputStream;
import java.security.cert.CertificateFactory;
import java.security.cert.X509CRL;
import java.security.cert.X509Certificate;

/**
 * 验证CRL,检查证书是否被吊销
 * @author S.J
 * @version 1.0, 11/03/2009
 */
public class ValidateCRL{
	public static void main(String[] args) throws Exception {
		String packagePath = "com/example/certificate/crl/";
		
//		创建CRL对象
		String crlPath = packagePath + "1.crl";
		X509CRL crl = loadX509CRL(crlPath);
		
//		创建包含可用和被吊销的两个证书对象的数组
		String availCertPath = packagePath + "wanghongjun.cer";
		String unAvailCertPath = packagePath + "liuheng.cer";
		X509Certificate[] certArray = new X509Certificate[2];
		certArray[0] = getCertificate(availCertPath);
		certArray[1] = getCertificate(unAvailCertPath);
		
//		验证证书是否被吊销
		for(int i=0; i<certArray.length; i++){
			System.out.println("证书序列号=" + getSerialNumber(certArray[i]));
			System.out.println("证书DN=" + certArray[i].getSubjectDN());
			if(crl.isRevoked(certArray[i])){
				System.out.println("证书被吊销\n");
			}else{
				System.out.println("证书可用\n");
			}
		}
	}
	
	/**
	 * 加载CRL证书吊销列表文件
	 * @param crlFilePath
	 * @return
	 * @throws Exception
	 */
	public static X509CRL loadX509CRL(String crlFilePath) throws Exception {
		FileInputStream in = new FileInputStream(crlFilePath);
		CertificateFactory cf = CertificateFactory.getInstance("X.509");
		X509CRL crl = (X509CRL)cf.generateCRL(in);
		in.close();
		return crl;
	}
	
	/**
	 * 加载证书文件
	 * @param certFilePath
	 * @return
	 * @throws Exception
	 */
	public static X509Certificate getCertificate(String certFilePath) throws Exception {
		FileInputStream in = new FileInputStream(certFilePath);
		CertificateFactory cf = CertificateFactory.getInstance("X.509");
		X509Certificate cert = (X509Certificate)cf.generateCertificate(in);
		return cert;
	}
	
	/**
	 * 读取证书序列号
	 * @param cert
	 * @return
	 */
	public static String getSerialNumber(X509Certificate cert) {
		if(null == cert) return null;
		byte [] serial = cert.getSerialNumber().toByteArray();			
		if(serial.length>0){
			String serialNumberString = new String();
			for(int i=0;i<serial.length;i++){
				String s =Integer.toHexString(Byte.valueOf(serial[i]).intValue());
				if(s.length()==8) s = s.substring(6);
				else if(1==s.length()) s="0"+s;
				serialNumberString+=s+" ";
			}
			return serialNumberString;
		}
		return null;
	}
}

 

分享到:
评论
2 楼 夜闯疯人院 2017-06-22  
如何在已经存在的CRL文件中加入新的吊销证书列表?
1 楼 沙舟狼客 2011-04-15  
如何在已经存在的CRL文件中加入新的吊销证书列表?
X509V2CRLGenerator crlGen = new X509V2CRLGenerator();
V2TBSCertListGenerator v2CrlGen = new V2TBSCertListGenerator();

这两个证书生成类,有什么区别?

相关推荐

    证书吊销列表CRL解析工具(Java)

    1. **X.509证书标准**:CRL遵循X.509标准,因此解析CRL需要对X.509证书格式有深入理解,包括证书的结构、字段和编码方式。 2. **ASN.1(Abstract Syntax Notation One)**:CRL通常使用ASN.1进行编码,Java中的`...

    证书和CRL详解

    在计算机安全领域,数字证书和...通过深入理解这些证书和CRL的知识点,我们可以更加安全和高效地进行电子身份验证和信息传输。在实际应用中,这些知识点对于确保数据传输的保密性、完整性和认证性有着至关重要的作用。

    国密数字证书验证-SM2、SM3、SM4

    在数字证书验证中,SM3用于计算证书和证书链的哈希值,以便与证书颁发机构发布的哈希值进行比对,确认证书的有效性和未被篡改。 SM4分组密码算法则是一种对称加密算法,主要用于数据的加密和解密。它采用128位的...

    包含DER、PEM、CRL后缀的数字证书.rar

    在这个压缩包文件中,我们看到涉及了三种不同格式的数字证书:DER、PEM以及CRL,同时也包含了根证书和下一级证书,这些都是数字证书验证体系的关键组成部分。 1. **DER(Distinguished Encoding Rules)**:DER是一...

    证书有效期验证源代码

    除了简单的有效性检查,源代码还可能包含更复杂的逻辑,如处理时区差异、检查证书链(中级CA证书和根CA证书)、以及处理证书吊销列表(CRL)或在线证书状态协议(OCSP)来确定证书是否已被撤销。 了解这些基本概念...

    JAVA版证书吊销列表CRL解析工具

    在IT行业中,证书吊销列表(CRL)是网络安全领域的一个关键概念,它用于验证数字证书的有效性。本文将深入探讨JAVA版证书吊销列表(CRL)解析工具的使用和重要性,以及如何通过Java编程语言处理CRL。 首先,我们...

    CA.rar_c#crl_ca openssl_ep1kdl20.dll_证书

    在CA的实现中,OpenSSL提供了创建和管理证书、密钥、CRL等工具,如`openssl ca`命令行工具,可以方便地进行证书签发、撤销等操作。 "ep1kdl20.dll"可能是一个特定于环境的动态链接库文件,用于提供某些特定功能,...

    数字证书的概念

    这一标准在公共密钥基础设施(PKI)领域内扮演着核心角色,它不仅定义了公钥证书的基本结构,还涵盖了证书吊销清单(CRL)、属性证书以及证书路径验证算法等相关内容。 - **X.509 v1**:1988年首次发布,作为ITU X....

    (源码)基于OpenHarmony和OpenSSL的证书管理系统.zip

    它提供了一套完整的证书解析、验证、撤销和链验证功能,旨在屏蔽不同第三方证书算法库的实现差异,为开发者提供统一的接口,简化证书管理相关的开发工作。 ## 项目的主要特性和功能 1. 证书解析与验证 解析X.509...

    CA数字证书认证

    4. **证书签发**:身份验证成功后,CA会使用自己的私钥对申请者的公钥和相关信息进行数字签名,生成数字证书。这个证书包含了申请者的公钥、标识信息以及CA的数字签名。 5. **证书安装与使用**:一旦证书被签发,它...

    Go语言编写用于检查验证证书信息的命令行工具certigo.zip

    4. 证书验证:certigo能检查证书的合法性,包括验证其签名、有效期、证书吊销列表(CRL)和在线证书状态协议(OCSP)。这对于发现即将到期的证书、无效签名或被吊销的证书至关重要。 5. 输出格式:certigo提供人性...

    X.509 RFC 5280 PKI CRL

    总之,X.509 RFC 5280标准是互联网上公钥基础设施的核心,它规定了证书和CRL的处理方式,从而在数字签名、加密解密、安全通信等场景中提供身份验证和数据保护。这个标准的严谨性和广泛采纳使得不同系统间的互操作性...

    测试的根证书与子证书的签名应用

    这可以通过生成新证书或使用证书撤销列表(CRL)来实现。 6. **安全实践**:测试环境中使用根证书和子证书时,应遵循最佳安全实践,例如定期更换密钥,限制私钥的访问权限,以及确保所有证书在不再使用后得到正确...

    crl

    客户端在验证服务器或用户提供的数字证书时,除了检查证书本身的有效性,还会查询CRL,确保证书不在吊销列表上,以此判断证书当前是否仍然有效。这个过程有助于防止恶意用户利用已撤销的证书进行欺诈活动。 CRL的...

    数字证书流程

    - **CRL验证**:定期从河北CA的LDAP服务下载黑名单CRL,更新后本地验证,性能更佳,可用性更高,但存在一定的延时。 ##### 4. LDAP与CRL发布 - **LDAP**(Lightweight Directory Access Protocol):一种轻量级的...

    数字证书基础.ppt

    当用户申请数字证书时,CA会验证其身份,然后使用自己的私钥对用户的公钥和身份信息进行签名,生成数字证书。这样,任何接收到该证书的人都可以通过验证CA的公钥来确认证书的真伪,防止被伪造或篡改。\n\n非对称加密...

    x.509 证书说明书

    PKI是基于X.509证书的一套系统,它提供了一种信任机制,使得网络参与者可以通过公钥/私钥对进行安全通信。PKI的核心组件包括: - **证书颁发机构(CA)**:负责验证证书申请者的身份,并签发证书。 - **注册机构...

    C# 开发的一个创建证书的例子

    3. 使用证书颁发机构(如果有的话)对证书进行签名。 4. 将证书保存到本地存储,如个人证书存储区或者文件系统。 使用证书时,可以: 1. 从证书存储中加载证书。 2. 检查证书的有效性,包括日期、签名和吊销列表...

    对证书的解析.zip

    1. **加载证书**:使用`X509_load_cert_crl_file()`函数加载`.cer`文件。 2. **提取基本信息**:调用`X509_get_subject_name()`获取证书的主题,`X509_get_issuer_name()`获取发行者信息,`X509_get_notBefore()`和`...

Global site tag (gtag.js) - Google Analytics