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;
}
}
分享到:
相关推荐
包含DER、PEM、CRL后缀的数字证书。也包含根证书和下一级证书,可用于对数字证书完整性、真实性的验证测试
java连接和验证的ldap学习文档,密码的校验,通过jndi连接ldap服务
论文研究-PKI中CRL撤消延迟的研究.pdf, 首先建立了使用 CRL发布证书撤消信息的数学模型 ....最后给出了计算机仿真结果 ,对理论分析正确性进行了验证 .
字如其名,可以验证上下级SM2证书。拖进去即可,非常简单。以后会持续更新工具版本,会推出界面. 应用属性介绍:可以读取二进制证书、PEM证书。需要安装OpenSSL64环境 0.142增加了CRL列表检测功能 0.145优化了CRL...
证书一般由可信的权威第三方CA中心(权威授权机构)颁发, CA 对其颁发的证书进行数字签名,以保证所颁发证书的完整性和可鉴别性。 CA可以为用户、计算机或服务等各类实体颁发证书。 证书服务器配置与管理全文共33...
支持各种选项,包括:在特定时间进行验证、白名单和吊销检查。 特征 X.509 路径构建 X.509 基本路径验证 签名RSA、DSA 和 EC 算法 名称链接 有效期 基本约束扩展 CA标志 路径长度约束 密钥使用扩展 扩展密钥使用...
“ jsrsasign”(RSA-Sign JavaScript库)是一个免费的开源加密库,支持RSA / RSAPSS / ECDSA / DSA签名/验证,ASN.1,PKCS#1/5/8私钥/公钥,X.509证书,纯JavaScript中的CRL,OCSP,CMS SignedData,TimeStamp,...
管理员可查询证书库,对其中的证书进行查询,校验等操作; 4. 用户可从服务器下载自己及 CA 的证书,可查询他人证书的状态。 证书服务器仅限于向各应用程序提供公开密钥的管理服务,使用公钥的各项操作如签 名, ...
证书吊销:用户发起证书吊销请求后,系统会为其更新 Certificate Revocation List (CRL),但考虑系统负荷,用户的吊销请求会被暂时记录,然后以天为单位更新,客户端可以通过 CRL Distribution Point(CRL 分发点...
生成证书链 用脚本生成一个根证书, 一个中间证书... mkdir certs crl newcerts private cd .. echo 1000 > $C/serial touch $C/index.txt $C/index.txt.attr echo ' [ ca ] default_ca = CA_default [ CA_defa
SSL解码器注意: : PHP脚本,用于解码SSL连接和/或证书并显示信息。 尝试提供您需要的所有... HSTS和HPKP标头SPKI哈希公钥PEM 证书PEM CRL验证完整的证书链验证。 发行人验证日期验证JSON API 警告错误的连接设置或证
use_crl_validator :启用/禁用特定的证书验证。 use_generic_validator :启用/禁用特定的证书验证 use_ocsp_validator :启用/禁用特定的证书验证。 use_path_validator :启用/禁用特定的证书验证。 chain_...
证书管理员此脚本创建和管理自签名证书: 初始化和管理 CA 数据库自动创建服务器证书创建和撤销客户端证书更新服务器的吊销证书 CRL 文件。 生成 nginx 配置一个单独的 bash 脚本,除了 openssl 之外没有任何依赖项...
SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准...
SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准...
SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准...
mod_sslcrl是用于Apache Web服务器的模块,该模块实现CRL(证书吊销列表)验证,并自动从相应的CA下载新的CRL文件。
SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准...
TLS ClientAuth强身份验证过程将验证数字证书的链(如果有),并使用CRL来验证证书的吊销状态(OCSP检查将在下一版本中进行)。 证书链通过验证后,它将检查LDAP服务器,以确定用户是否被授权在站点上注册FIDO U2F...
SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证书验证、PKCS7标准...