查询目录下所有证书的信息

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;




public class search {
public static  ArrayList<File> filelist=new ArrayList<File>();
public static void main(String args[ ]) throws CertificateException, IOException{
Scanner scanner = new Scanner(System.in);
System.out.println("请输入路径");
String path=scanner.nextLine();
System.out.println("你输入的路径为"+path);
File dir = new File(path);
File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组
if (files == null) {
System.out.println("路径输入错误");//该文件目录下没有东西,则输出路径输入错误
return;
}
 
filelist=(ArrayList<File>) getFileList(path);
if (filelist.size()==0) {
System.out.println("没有数字证书");
}
show(filelist);

}





public static List<File> getFileList(String strPath) {
File dir = new File(strPath);
File[] files = dir.listFiles(); // 该文件目录下文件全部放入数组


       if (files != null) {
           for (int i = 0; i < files.length; i++) {
               String fileName = files[i].getName();
               if (files[i].isDirectory() && !files[i].getName().equals("$RECYCLE.BIN")) { // 判断是文件还是文件夹,排除回收箱文件夹
               
                   getFileList(files[i].getAbsolutePath()); // 获取文件绝对路径
               } else if (fileName.endsWith("cer")||fileName.endsWith("pem")||fileName.endsWith("crt")||fileName.endsWith("der")) { // 判断文件名是否以.cer,.pem.crt.der结尾
                   String strFileName = files[i].getAbsolutePath();
                   System.out.println("数字证书位置---" + strFileName);
                   filelist.add(files[i]);
               } else {
                   continue;
               }
           }
          
       }


       return filelist;
   } 
public static void show(ArrayList<File> filelist) throws CertificateException, IOException{
for (File List1 : filelist) {
CertificateFactory cf=CertificateFactory.getInstance("x.509");
      System.out.println("数字证书名称"+List1.getName());
      System.out.println("----------数字证书名称详细信息-----------");
       FileInputStream in=new FileInputStream(List1);  
       java.security.cert.Certificate c=cf.generateCertificate(in);  
       in.close();  
       X509Certificate t=(X509Certificate) c;  
 
       System.out.println("版本号 "+t.getVersion());  
 
       System.out.println("序列号 "+t.getSerialNumber().toString(16));  
       System.out.println("签名算法 "+t.getSigAlgName());
       System.out.println("全名 "+t.getSubjectDN());  
       System.out.println("颁发者"+t.getIssuerDN());  
       
       System.out.println("有效期起始日 "+t.getNotBefore());  
 
       System.out.println("有效期截至日 "+t.getNotAfter());  
}
 
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值