快速业务通道

JAVA操作数字证书的方法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

JAVA操作数字证书的方法

时间:2011-05-07

一:需要包含的包

import java.security.*; import java.io.*; import java.util.*; import java.security.*; import java.security.cert.*; import sun.security.x509.* import java.security.cert.Certificate; import java.security.cert.CertificateFactory;

二:从文件中读取证书

用keytool将.keystore中的证书写入文件中,然后从该文件中读取证书信息

CertificateFactory cf=CertificateFactory.getInstance("X.509"); FileInputStream in=new FileInputStream("out.csr"); Certificate c=cf.generateCertificate(in); String s=c.toString();

三:从密钥库中直接读取证书

String pass="123456"; FileInputStream in=new FileInputStream(".keystore"); KeyStore ks=KeyStore.getInstance("JKS"); ks.load(in,pass.toCharArray()); java.security.cert.Certificate c=ks.getCertificate(alias);//alias为条目的别名

四:JAVA程序中显示证书指定信息

System.out.println("输出证书信息:\n"+c.toString()); System.out.println("版本号:"+t.getVersion()); System.out.println("序列号:"+t.getSerialNumber().toString(16)); System.out.println("主体名:"+t.getSubjectDN()); System.out.println("签发者:"+t.getIssuerDN()); System.out.println("有效期:"+t.getNotBefore()); System.out.println("签名算法:"+t.getSigAlgName()); byte [] sig=t.getSignature();//签名值 PublicKey pk=t.getPublicKey(); byte [] pkenc=pk.getEncoded(); System.out.println("公钥"); for(int i=0;i<pkenc.length;i++)System.out.print(pkenc[i]+",");

JAVA操作数字证书的方法(2)

时间:2011-05-07

五:JAVA程序列出密钥库所有条目

String pass="123456"; FileInputStream in=new FileInputStream(".keystore"); KeyStore ks=KeyStore.getInstance("JKS"); ks.load(in,pass.toCharArray()); Enumeration e=ks.aliases(); while(e.hasMoreElements()) java.security.cert.Certificate c=ks.getCertificate((String)e.nextElement());

六:JAVA程序修改密钥库口令

String oldpass="123456"; String newpass="654321"; FileInputStream in=new FileInputStream(".keystore"); KeyStore ks=KeyStore.getInstance("JKS"); ks.load(in,oldpass.toCharArray()); in.close(); FileOutputStream output=new FileOutputStream(".keystore"); ks.store(output,newpass.toCharArray()); output.close();

七:JAVA程序修改密钥库条目的口令及添加条目

FileInputStream in=new FileInputStream(".keystore"); KeyStore ks=KeyStore.getInstance("JKS"); ks.load(in,storepass.toCharArray()); Certificate [] cchain=ks.getCertificate(alias);获取别名对应条目的证书链 PrivateKey pk=(PrivateKey)ks.getKey(alias,oldkeypass.toCharArray());获取别名对应条目的私钥 ks.setKeyEntry(alias,pk,newkeypass.toCharArray(),cchain);向密钥库中添加条目

第一个参数指定所添加条目的别名,假如使用已存在别名将覆盖已存在条目,使用新别名将增加一个新条目,第二个参数为条目的私钥,第三个为设置的新口令,第四个为该私钥的公钥的证书链

FileOutputStream output=new FileOutputStream("another");

ks.s

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号