本站首页    管理页面    写新日志    退出


«January 2026»
123
45678910
11121314151617
18192021222324
25262728293031


公告
暂无公告...

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:天地无用
日志总数:55
评论数量:43
留言数量:1
访问次数:196027
建立时间:2008年4月17日




JAVA对数字证书的常用操作(转)
软件技术

kkk888929 发表于 2008/4/22 14:12:30

  一需要包含的包 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程序列出密钥库所有条目 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.store(output,storepass.toCharArray())将keystore对象内容写入新文件 八 JAVA程序检验别名和删除条目 FileInputStream in=new FileInputStream(".keystore");KeyStore ks=KeyStore.getInstance("JKS");ks.load(in,storepass.toCharArray());ks.containsAlias("sage");检验条目是否在密钥库中,存在返回trueks.deleteEntry("sage");删除别名对应的条目FileOutputStream output=new FileOutputStream(".keystore");ks.store(output,storepass.toCharArray())将keystore对象内容写入文件,条目删除成功


阅读全文(1129) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.514 second(s), page refreshed 144818496 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号