`
kiki1120
  • 浏览: 307293 次
  • 性别: 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();

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

相关推荐

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

    包含DER、PEM、CRL后缀的数字证书。也包含根证书和下一级证书,可用于对数字证书完整性、真实性的验证测试

    java连接和验证ldap文档

    java连接和验证的ldap学习文档,密码的校验,通过jndi连接ldap服务

    论文研究-PKI中CRL撤消延迟的研究.pdf

    论文研究-PKI中CRL撤消延迟的研究.pdf, 首先建立了使用 CRL发布证书撤消信息的数学模型 ....最后给出了计算机仿真结果 ,对理论分析正确性进行了验证 .

    SM2证书验证工具Beta0.145

    字如其名,可以验证上下级SM2证书。拖进去即可,非常简单。以后会持续更新工具版本,会推出界面. 应用属性介绍:可以读取二进制证书、PEM证书。需要安装OpenSSL64环境 0.142增加了CRL列表检测功能 0.145优化了CRL...

    证书服务器配置与管理.pptx

    证书一般由可信的权威第三方CA中心(权威授权机构)颁发, CA 对其颁发的证书进行数字签名,以保证所颁发证书的完整性和可鉴别性。 CA可以为用户、计算机或服务等各类实体颁发证书。 证书服务器配置与管理全文共33...

    certvalidator:用于验证X.509证书和路径的Python库

    支持各种选项,包括:在特定时间进行验证、白名单和吊销检查。 特征 X.509 路径构建 X.509 基本路径验证 签名RSA、DSA 和 EC 算法 名称链接 有效期 基本约束扩展 CA标志 路径长度约束 密钥使用扩展 扩展密钥使用...

    jsrsasign:“ jsrsasign”(RSA-Sign JavaScript库)是一个免费的开源加密库,支持RSARSAPSSECDSADSA签名验证,ASN.1,PKCS#158私钥,X.509证书,CRL,OCSP,CMS SignedData,TimeStamp,CAdES JSON Web纯JavaScript中的SignatureToken

    “ jsrsasign”(RSA-Sign JavaScript库)是一个免费的开源加密库,支持RSA / RSAPSS / ECDSA / DSA签名/验证,ASN.1,PKCS#1/5/8私钥/公钥,X.509证书,纯JavaScript中的CRL,OCSP,CMS SignedData,TimeStamp,...

    证书服务器的设计与实现.pdf

    管理员可查询证书库,对其中的证书进行查询,校验等操作; 4. 用户可从服务器下载自己及 CA 的证书,可查询他人证书的状态。 证书服务器仅限于向各应用程序提供公开密钥的管理服务,使用公钥的各项操作如签 名, ...

    基于Go+MySQL实现简单的CA认证系统【100012592】

    证书吊销:用户发起证书吊销请求后,系统会为其更新 Certificate Revocation List (CRL),但考虑系统负荷,用户的吊销请求会被暂时记录,然后以天为单位更新,客户端可以通过 CRL Distribution Point(CRL 分发点...

    nginx代理服务器配置双向证书验证的方法

    生成证书链 用脚本生成一个根证书, 一个中间证书... mkdir certs crl newcerts private cd .. echo 1000 &gt; $C/serial touch $C/index.txt $C/index.txt.attr echo ' [ ca ] default_ca = CA_default [ CA_defa

    ssl-decoder:简单PHP脚本,用于解码SSL连接并显示信息

    SSL解码器注意: : PHP脚本,用于解码SSL连接和/或证书并显示信息。 尝试提供您需要的所有... HSTS和HPKP标头SPKI哈希公钥PEM 证书PEM CRL验证完整的证书链验证。 发行人验证日期验证JSON API 警告错误的连接设置或证

    Smartcard-Demo:智能卡身份验证项目的存储库

    use_crl_validator :启用/禁用特定的证书验证。 use_generic_validator :启用/禁用特定的证书验证 use_ocsp_validator :启用/禁用特定的证书验证。 use_path_validator :启用/禁用特定的证书验证。 chain_...

    certificate-manager:管理网络服务器(主要是 nginx)的自签名服务器和客户端证书的脚本

    证书管理员此脚本创建和管理自签名证书: 初始化和管理 CA 数据库自动创建服务器证书创建和撤销客户端证书更新服务器的吊销证书 CRL 文件。 生成 nginx 配置一个单独的 bash 脚本,除了 openssl 之外没有任何依赖项...

    Win64 OpenSSL v3.1.0

    SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准...

    openssl api 编程

    SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准...

    openssl开发手册.7z

    SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准...

    mod_sslcrl:自动更新并应用证书吊销列表-开源

    mod_sslcrl是用于Apache Web服务器的模块,该模块实现CRL(证书吊销列表)验证,并自动从相应的CA下载新的CRL文件。

    uos上编译上的openssl的库文件和头文件

    SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准...

    StrongKey PKI2FIDO:Web应用程序,用于从TLS ClientAuth会话中注册FIDO U2F密钥-开源

    TLS ClientAuth强身份验证过程将验证数字证书的链(如果有),并使用CRL来验证证书的吊销状态(OCSP检查将在下一版本中进行)。 证书链通过验证后,它将检查LDAP服务器,以确定用户是否被授权在站点上注册FIDO U2F...

    Openssl编程.rar

    SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准...

Global site tag (gtag.js) - Google Analytics