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("读证书文件出错!");
}
}
}