zoukankan      html  css  js  c++  java
  • Java对证书的操作

    1 Java程序从证书文件读取证书

    import java.io.*;

    import java.security.cert.*;

    public class PrintCert{

    public static void main(String args[ ]) throws Exception{

            CertificateFactory cf=CertificateFactory.getInstance("X.509");

            FileInputStream in=new FileInputStream("my.cer");

            Certificate c=cf.generateCertificate(in);

            in.close();

            String s=c.toString( );

            // 显示证书

      FileOutputStream fout=new FileOutputStream("tmp.txt");

             BufferedWriter out= new BufferedWriter(new OutputStreamWriter(fout));

            out.write(s,0,s.length( )); 

            out.close();   

    }

    }  

    2 Java程序从密钥库直接读取证书

    import java.io.*;

    import java.security.*;

    import java.security.cert.Certificate;

    public class PrintCert2{

        public static void main(String args[ ]) throws Exception{

              String pass="080302";

              String alias="mykey";

              String name=".keystore";

              FileInputStream in=new FileInputStream(name);

              KeyStore ks=KeyStore.getInstance("JKS");           

              ks.load(in,pass.toCharArray());

              Certificate c=ks.getCertificate(alias);

              in.close();

             System.out.println(c.toString( ));

        }

    }  

    3 Java程序显示证书指定信息(全名/公钥/签名等)

    import java.io.*;

    import java.security.*;

    import java.security.cert.*;

    import java.math.*;

    public class ShowCertInfo{

       public static void main(String args[ ]) throws Exception{

            CertificateFactory cf=CertificateFactory.getInstance("X.509");

            FileInputStream in=new FileInputStream("my.cer");

            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.getSubjectDN());

            System.out.println("签发者全名n"+t.getIssuerDN());

            System.out.println("有效期起始日 "+t.getNotBefore());

            System.out.println("有效期截至日 "+t.getNotAfter());

            System.out.println("签名算法 "+t.getSigAlgName());

            byte[] sig=t.getSignature();

            System.out.println("签名n"+new BigInteger(sig).toString(16));

            PublicKey pk=t.getPublicKey();

            byte[ ] pkenc=pk.getEncoded();

            System.out.println("公钥");

            for(int i=0;i< div=""> 

            System.out.print(pkenc[i]+",");

            }

    }

    }

  • 相关阅读:
    [记录点滴] 一个解决Lua 随机数生成问题的办法
    [源码解析] 从TimeoutException看Flink的心跳机制
    [记录点滴] OpenResty中Redis操作总结
    [记录点滴] 小心 Hadoop Speculative 调度策略
    [源码解析] GroupReduce,GroupCombine 和 Flink SQL group by
    第28 章 : 理解容器运行时接口 CRI
    第27 章 : Kubernetes 安全之访问控制
    第26 章 : 理解 CNI 和 CNI 插件
    第25 章 : Kubernetes 网络模型进阶
    第24 章 : Kubernetes API 编程利器:Operator 和 Operator Framework
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3397983.html
Copyright © 2011-2022 走看看