JDK 解析 X.509证书和CRL 示例代码

软件包 java.security.cert

提供用于解析和管理证书、证书撤消列表 (CRL) 和证书路径的类和接口


以解析X.509证书为例:

import java.security.cert.CRLException; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509CRL; import java.security.cert.X509CRLEntry; import java.security.cert.X509Certificate; import java.security.cert.CRLException; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509CRL; import java.security.cert.X509CRLEntry; import java.security.cert.X509Certificate; view plaincopy to clipboardprint? /** * 解析证书Certificate,文件在本地,可以使用 FileInputStream fileInput = new FileInputStream("证书文件的路径"); * 将fileInput作为该方法的参数。 * 如果文件需在线下载,可以使用URL url = new URL("证书文件在线地址"); URLConnection conn = url.openConnection(); * InputStream inStream = conn.getInputStream();,将inStream作为参数。 * * @param inStream * 证书文件流 * @throws Exception */ public void parseCertByJDK(InputStream inStream)throws Exception { //证书工厂。此处指明证书的类型 CertificateFactory cf = CertificateFactory.getInstance("X.509"); // 根据传入的流类型,可以生成Cert实例,也可以生成CRL实例 X509Certificate cert = (X509Certificate) cf .generateCertificate(inStream); // X509Certificate 中提供了多个方法,用于读取证书中的各类信息。 System.out.println(cert.getSerialNumber()); } /** * 解析证书Certificate,文件在本地,可以使用 FileInputStream fileInput = new FileInputStream("证书文件的路径"); * 将fileInput作为该方法的参数。 * 如果文件需在线下载,可以使用URL url = new URL("证书文件在线地址"); URLConnection conn = url.openConnection(); * InputStream inStream = conn.getInputStream();,将inStream作为参数。 * * @param inStream * 证书文件流 * @throws Exception */ public void parseCertByJDK(InputStream inStream)throws Exception { //证书工厂。此处指明证书的类型 CertificateFactory cf = CertificateFactory.getInstance("X.509"); // 根据传入的流类型,可以生成Cert实例,也可以生成CRL实例 X509Certificate cert = (X509Certificate) cf .generateCertificate(inStream); // X509Certificate 中提供了多个方法,用于读取证书中的各类信息。 System.out.println(cert.getSerialNumber()); } view plaincopy to clipboardprint? /** * use JDK to parse CRL * * @param inStream * crl information stream * @throws IOException * @throws CertificateException * @throws CRLException */ public void parseCRLByJDK(InputStream inStream) throws IOException,CertificateException, CRLException { // 指定证书类型 CertificateFactory cf = CertificateFactory.getInstance("X.509"); // 根据CRL文件流,获得X509CRL实例 X509CRL crl = (X509CRL) cf.generateCRL(inStream); // 可以获取CRL的相关信息,比如版本、发布者等等 System.out.println(crl.getIssuerDN()); // 获取被撤销的证书的列表 Set certs = crl.getRevokedCertificates(); Iterator iterator = certs.iterator(); // 遍历被撤销的证书的列表,解析每个证书的信息 while (iterator.hasNext()) { // 被撤销的某个证书的实例 X509CRLEntry entry = (X509CRLEntry) iterator.next(); // 读取证书的相关信息 String time = new SimpleDateFormat("yyyyMMddHHmmss").format(entry .getRevocationDate()); System.out.println(entry.getSerialNumber()); System.out.println(entry.getSerialNumber().toString(16) .toUpperCase()); System.out.println(time); System.out.println(); } }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值