扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
码签名证书是数字证书一种,他对于代码、软件、应用和可执行文件的合法性。基于公钥基础结构的代码签名证书对代码进行签名,并确保在从开发人员系统到最终用户系统的过程中,应用产品不会被更改或破坏。代码签名可以帮助最终用户确定软件应用程序是否可以信任。
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了阜康免费建站欢迎大家使用!
标准代码签名证书
标准代码签名只需要验证申请企业的基本信息、税务信息,验证成功后通过邮件等形式通常针对32/64位应用程序进行签名,防止各类杀毒软件的误报。需要较短的处理时间以及较低的成本、无法用于 LSA 和 UEFI 文件签名、无法用于内核模式驱动程序。
EV扩展型代码签名证书
EV代码签名证书除了验证企业的基本信息、税务信息外,还对企业的经营地址、申请人身份进行审查,区别于标准代码签名的重要特点是支持Windows 10内核驱动文件签名和消除SmartScreen筛选器安全提醒,此外EV代码签名针对内核模式的驱动文件需要进行微软的交叉签名。
具体二者的主要区别如下:
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、确保代码完整性
如果您需要在网上传输代码,并且您希望确保没有人对您的源代码进行任何更改或利用,那么这个工具就较适合您。它可以让您放心,一旦您的作品发表在网上,它不会被可疑的个人修改。一旦应用程序被签名,系统就可以检测到应用程序的任何更改,无论更改是意外引入的还是恶意代码。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流