java代码签名认证 java签名验签

VeriSign代码签名证书是做什么用的?

码签名证书是数字证书一种,他对于代码、软件、应用和可执行文件的合法性。基于公钥基础结构的代码签名证书对代码进行签名,并确保在从开发人员系统到最终用户系统的过程中,应用产品不会被更改或破坏。代码签名可以帮助最终用户确定软件应用程序是否可以信任。

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了阜康免费建站欢迎大家使用!

标准代码签名证书

标准代码签名只需要验证申请企业的基本信息、税务信息,验证成功后通过邮件等形式通常针对32/64位应用程序进行签名,防止各类杀毒软件的误报。需要较短的处理时间以及较低的成本、无法用于 LSA 和 UEFI 文件签名、无法用于内核模式驱动程序。

EV扩展型代码签名证书

EV代码签名证书除了验证企业的基本信息、税务信息外,还对企业的经营地址、申请人身份进行审查,区别于标准代码签名的重要特点是支持Windows 10内核驱动文件签名和消除SmartScreen筛选器安全提醒,此外EV代码签名针对内核模式的驱动文件需要进行微软的交叉签名。

具体二者的主要区别如下:

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);

(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,"newpass".toCharArray()); 这里是写入了新的密钥库,也可以使用第七条来增加条目

什么叫代码签名??他有什么用??

代码签名证书,顾名思义,就是软件开发商用来给开发的软件签名的证书。通过对代码数字签名来标识软件来源,记录软件开发者的真实身份,保证代码在签名之后,不被篡改。当用户下载已经签名的代码时,计算机自动验证该代码的可信性,并且提示用户可以放心下载和使用!

代码签名证书的好处

1、可赢得客户信任

代码签名提供身份验证,以确保客户下载的文件来自证书上发布者。在运行应用程序之前显示签名方的身份,从而增强用户的信任。

2、保护品牌声誉

消除安全警告,当用户安装软件时显示经过验证的公司名称。

3、确保代码完整性

如果您需要在网上传输代码,并且您希望确保没有人对您的源代码进行任何更改或利用,那么这个工具就较适合您。它可以让您放心,一旦您的作品发表在网上,它不会被可疑的个人修改。一旦应用程序被签名,系统就可以检测到应用程序的任何更改,无论更改是意外引入的还是恶意代码。


分享题目:java代码签名认证 java签名验签
路径分享:http://scyanting.com/article/dodssjj.html