qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

java数字证书解析

 这两天公司项目需要用到数字证书,把N年前的代码找回来贴上

package com.jinhill.util;

import java.io.*;
import java.security.*;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Properties;

public class Test {

 public static String getSubjectDN(byte[] der) {
  String dn = "";
  try {
   ByteArrayInputStream bIn = new ByteArrayInputStream(der);
   // BouncyCastleProvider provider = new BouncyCastleProvider();
   // CertificateFactory cf = CertificateFactory.getInstance("X509",
   // provider);
   CertificateFactory cf = CertificateFactory.getInstance("X.509",
     "SUN");
   X509Certificate cert = (X509Certificate) cf
     .generateCertificate(bIn);
   dn = cert.getSubjectDN().getName();
   bIn.close();
  } catch (CertificateException e) {
   e.printStackTrace();
  } catch (NoSuchProviderException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return dn;
 }
 public static String parseCertDN(String dn, String type){
  type = type + "=";
  String[] split = dn.split(",");
  for (String x : split) {
      if (x.contains(type)) {
       x = x.trim();
       return x.substring(type.length());
      }
  }
  return null;
 }
 /**
  * @param args
  */
 public static void main(String[] args) {
  try {
   FileInputStream fis = new FileInputStream(
     "D:/Work/RootCA/newcerts/Reader01.cer");
   int flen = fis.available();
   byte[] buf = new byte[flen];
   fis.read(buf, 0, flen);
   String dn = getSubjectDN(buf);
   String cn = parseCertDN(dn, "CN");
   System.out.println(cn);
  } catch (Exception ex) {
   System.out.println("读证书文件出错!");
  }
 }

}

posted on 2013-08-20 14:12 顺其自然EVO 阅读(677) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年8月>
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜