快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
tore(output,storepass.toCharArray())将keystore对象内容写入新文件

八:JAVA程序检验别名和删除条目

FileInputStream in=new FileInputStream(".keystore"); KeyStore ks=KeyStore.getInstance("JKS"); ks.load(in,storepass.toCharArray()); ks.containsAlias("sage");检验条目是否在密钥库中,存在返回true ks.deleteEntry("sage");删除别名对应的条目 FileOutputStream output=new FileOutputStream(".keystore"); ks.store(output,storepass.toCharArray())将keystore对象内容写入文件,条目删除成功

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

时间:2011-05-07

九:JAVA程序签发数字证书

(1)从密钥库中读取CA的证书

FileInputStream in=new FileInputStream(".keystore"); KeyStore ks=KeyStore.getInstance("JKS"); ks.load(in,storepass.toCharArray()); java.security.cert.Certificate c1=ks.getCertificate("caroot");

(2)从密钥库中读取CA的私钥

PrivateKey caprk=(PrivateKey)ks.getKey(alias,cakeypass.toCharArray());

(3)从CA的证书中提取签发者的信息

byte[] encod1=c1.getEncoded();提取CA证书的编码 X509CertImpl cimp1=new X509CertImpl(encod1); 用该编码创建X509CertImpl类型对象 X509CertInfo cinfo1=(X509CertInfo)cimp1.get(X509CertImpl.NAME+"."+X509CertImpl.INFO); 获取X509CertInfo对象 X500Name issuer=(X500Name)cinfo1.get(X509CertInfo.SUBJECT+"."+CertificateIssuerName.DN_NAME); 获取X509Name类型的签发者信息

(4)获取待签发的证书

CertificateFactory cf=CertificateFactory.getInstance("X.509"); FileInputStream in2=new FileInputStream("user.csr"); java.security.cert.Certificate c2=cf.generateCertificate(in); (5)从待签发的证书中提取证书信息

byte [] encod2=c2.getEncoded(); X509CertImpl cimp2=new X509CertImpl(encod2); 用该编码创建X509CertImpl类型对象 X509CertInfo cinfo2=(X509CertInfo)cimp2.get(X509CertImpl.NAME+"."+X509CertImpl.INFO); 获取X509CertInfo对象

(6)设置新证书有效期

Date begindate=new Date(); 获取当前时间 Date enddate=new Date(begindate.getTime()+3000*24*60*60*1000L); 有效期为3000天 CertificateValidity cv=new CertificateValidity(begindate,enddate); 创建对象 cinfo2.set(X509CertInfo.VALIDITY,cv); 设置有效期

(7)设置新证书序列号

int sn=(int)(begindate.getTime()/1000);以当前时间为序列号

CertificateSerialNumber csn=new CertificateSerialNumber(sn);

cinfo2.set(X509CertInfo.SERIAL_NUMBER,csn);

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

时间:2011-05-07

(8)设置新证书签发者

cinfo2.set(X509CertInfo.ISSUER+"."+CertificateIssuerName.DN_NAME,issuer);应用第三步的结果

(9)设置新证书签名算法信息

AlgorithmId algorithm=new AlgorithmId(AlgorithmId.md5WithRSAEncryption_oid);

cinfo2.set(CertificateAlgorithmId.NAME+"."+CertificateAlgorithmId.ALGORITHM,algorithm);

(10)创建证书并使用CA的私钥对其签名

X509CertImpl newcert=new X509CertImpl(cinfo2);

newcert.sign(caprk,"MD5WithRSA"); 使用CA私钥对其签名

(11)将新证书写入密钥库

ks.setCertificateEntry("lf_signed",newcert); FileOutputStream out=new FileOutputStream("newstore"); ks.store(out,"newpas

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号