当前位置: 首页 > 面试题库 >

jarsigner:此jar包含其证书链未经验证的条目

上官高畅
2023-03-14
问题内容
我正在尝试对JAR文件进行代码签名,并且正在使用JDK
1.7u1。我们获得了GoDaddy代码签名证书,我按照此处的说明(方法1)进行操作: http
//help.godaddy.com/article/4780

JAR可以正常运行,但是每当我尝试运行命令时: jarsigner -verify在使用JDK 1.7u1签名的JAR上,我都会得到以下输出:

s        180 Mon Dec 05 10:24:32 EST 2011 META-INF/MANIFEST.MF

      [entry was signed on 12/5/11 10:24 AM]
      X.509, CN=Removed Company Name, O=Removed Company Name, L=Removed City, ST=Removed State, C=US
      [certificate is valid from 12/2/11 4:30 PM to 12/2/13 4:30 PM]
      X.509, SERIALNUMBER=00000000, CN=Go Daddy Secure Certification Authority, OU=http://certificates.godaddy.com/repository, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US
      [certificate is valid from 11/15/06 8:54 PM to 11/15/26 8:54 PM]
      X.509, OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
      [certificate is valid from 6/29/04 1:06 PM to 6/29/34 1:06 PM]
      [CertPath not validated: null]

         342 Mon Dec 05 10:24:34 EST 2011 META-INF/JAVACSC.SF
        6180 Mon Dec 05 10:24:34 EST 2011 META-INF/JAVACSC.RSA
           0 Mon Dec 05 10:24:30 EST 2011 META-INF/
sm      2161 Wed Nov 30 10:23:20 EST 2011 C:/Users/Seth/Desktop/JAR/RunAppSF.class

      [entry was signed on 12/5/11 10:24 AM]
      X.509, CN=Removed Company Name, O=Removed Company Name, L=Removed City, ST=Removed State, C=US
      [certificate is valid from 12/2/11 4:30 PM to 12/2/13 4:30 PM]
      X.509, SERIALNUMBER=00000000, CN=Go Daddy Secure Certification Authority, OU=http://certificates.godaddy.com/repository, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US
      [certificate is valid from 11/15/06 8:54 PM to 11/15/26 8:54 PM]
      X.509, OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
      [certificate is valid from 6/29/04 1:06 PM to 6/29/34 1:06 PM]
      [CertPath not validated: null]


  s = signature was verified 
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar verified.

Warning: 
This jar contains entries whose certificate chain is not validated.

我还在jarsigner -verifyJDK 1.6u26和1.6u14上使用与上述相同的JAR
尝试了该命令,结果返回正常。(输出低于1.6u26)。

         180 Mon Dec 05 10:24:32 EST 2011 META-INF/MANIFEST.MF
         342 Mon Dec 05 10:24:34 EST 2011 META-INF/JAVACSC.SF
        6180 Mon Dec 05 10:24:34 EST 2011 META-INF/JAVACSC.RSA
           0 Mon Dec 05 10:24:30 EST 2011 META-INF/
sm      2161 Wed Nov 30 10:23:20 EST 2011 C:/Users/Seth/Desktop/JAR/RunAppSF.class

      [entry was signed on 12/5/11 10:24 AM]
      X.509, CN=Removed Company Name, O=Removed Company Name, L=Removed City, ST=Removed State, C=US
      [certificate is valid from 12/2/11 4:30 PM to 12/2/13 4:30 PM]
      X.509, SERIALNUMBER=00000000, CN=Go Daddy Secure Certification Authority, OU=http://certificates.godaddy.com/repository, O="GoDaddy.com, Inc.", L=Scottsdale, ST=Arizona, C=US
      [certificate is valid from 11/15/06 8:54 PM to 11/15/26 8:54 PM]
      [KeyUsage extension does not support code signing]
      X.509, OU=Go Daddy Class 2 Certification Authority, O="The Go Daddy Group, Inc.", C=US
      [certificate is valid from 6/29/04 1:06 PM to 6/29/34 1:06 PM]


  s = signature was verified 
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar verified.

我是否缺少为使JDK 1.7正确签名JAR而需要采取的额外步骤?


问题答案:

不会 丢失任何东西,而且绝对 不会 一个人遇到这个问题。经过将近12个小时的努力,我发现问题的根源在于将二进制文件JDK 1.7与Java的较旧版本混合在一起JRE-1.6。为了更准确,keytool自带JRE,而JDK同时附带了keytooljarsigner

因此,要解决此问题,我已经JDK-1.7从系统中完全卸载并安装了JDK-1.6 Update 30。现在,如果我愿意,jarsigner -verify -verbose -certs blah.jar它将在jar verified没有任何警告的情况下产生,我相信这是您所期望的。



 类似资料:
  • 我正在用以下组件构建自己的证书链: 根证书是自签名证书,中间证书由根证书和用户由中间证书签名。 现在我想验证一个用户证书是否有其根证书的锚。 具有 验证是可以的。在下一步中,我将使用 验证结果显示 什么是错的?

  • 我有一个PVK和SPC文件,想用它们来签署Netbeans IDE 7.3中的jar文件。我的应用程序将从JavaWebStart开始部署。 我使用keytool将它们组合成一个PFX文件。 “C:\Program Files\Microsoft SDK\Windows\v7.1\Bin\pvk2pfx.exe”-pvk joy。pvk-spc欢乐。spc-pi快乐-pfx快乐。pfx 我找到了化

  • 我在签署我的JavaFX应用程序时遇到问题。我正在使用此处指定的ant任务: 然而,当我在签名的jar上运行jarsigner-验证时,它会说jar是无符号的。(签名丢失或不可解析)。 打开它,我看到一个文件META-INF/SIGNATURE. BSF,但我相信jarsigner期待: 签名文件,带有。SF扩展,和 那么,JavaFX签名任务是否没有创建正确的签名jar?BSF(Blob Sig

  • 主要内容:Linux RPM 包校验,Linux RPM数字证书验证执行   命令可以看到,Linux 系统中装有大量的 RPM 包,且每个包都含有大量的安装文件。因此,为了能够及时发现文件误删、误修改文件数据、恶意篡改文件内容等问题,Linux 提供了以下两种监控(检测)方式: RPM 包校验:其实就是将已安装文件和 /var/lib/rpm/ 目录下的数据库内容进行比较,确定文件内容是否被修改。 RPM 包数字证书校验:用来校验 RPM 包本身是否被修改。 L

  • 问题内容: 我想使用jarsigner对jar进行签名,然后使用Java应用程序对其进行验证,该Java应用程序没有将签名的jar作为其类路径的一部分(即,仅使用jar的文件系统位置) 现在我的问题是从罐子中取出签名文件,有没有简单的方法可以做到这一点? 我玩过Inflater和Jar InputStreams并没有运气。 还是可以通过更好的方式来实现? 谢谢 问题答案: 《安全提供程序实施指南》

  • 我最近升级了Inteliij IDEA 2019.2,如果我尝试从IDE中提取Git,我会发现以下错误:无法访问'https://github.xxx.com/app-Hello-USD/DGS.git/“:SSL证书问题:证书链中的自签名证书。 有人能帮我什么选项,我必须启用。 谢谢