【发布时间】:2013-08-19 07:42:46
【问题描述】:
几天来我一直在努力解决这个问题,我完全被难住了。这是纲要:
- 我有一个使用 Tycho 通过 Maven 3 构建的 Eclipse 插件项目
- 在 Maven 中,我设置了 maven-jarsigner-plugin 以使用我的密钥库对 jar 进行签名(有关密钥库的详细信息,请参见下文)
- 我的密钥库中有 Thawte 签名的代码签名证书
我可以从 target/* 获取任何已签名的 jar 文件并在其上运行“jarsigner -verify”。这就是发生的事情:
#java 6 on a VM
vagrant@test2:/vagrant/com.example.plugins.eclipse/target$ jarsigner -verify com.example.eclipse-0.1.3-SNAPSHOT.jar
jar verified.
下一步:
#java 7 on a completely different vm
vagrant@test1:/vagrant$ jarsigner -verify com.example.eclipse-0.1.3-SNAPSHOT.jar
jar verified.
Warning:
This jar contains entries whose certificate chain is not validated.
Re-run with the -verbose and -certs options for more details.
我已经注意不要使用同时安装了Java6和Java7的机器,所以它不是this issue
我也不相信它是基于算法的,如 this issue 中所述,因为我可以使用 Java 6 或 Java 7 对项目进行签名,并且它总是在 Java6 和 中进行验证从不 在 Java7 中验证,无论我使用哪个环境签署 jar。
这是keytool -list
的输出Keystore type: JKS
Keystore provider: SUN
Your keystore contains 3 entries
root, Aug 11, 2013, trustedCertEntry,
Certificate fingerprint (SHA1): 91:C6:D6:EE:3E:8A:C8:63:84:E5:48:C2:99:29:5C:75:6C:81:7B:81
intermediate, Aug 11, 2013, trustedCertEntry,
我不得不相信这是一个证书链问题,因为我能够在 Java 7 上使用以下命令验证 jar:
jarsigner -verify -keystore keystore com.example.eclipse-0.1.3-SNAPSHOT.jar
显然,我不能让插件的每个用户都使用我的密钥库文件,所以这不是一个解决方案。但是,它确实强化了我在 Java 7 中存在证书链问题。想法?
【问题讨论】:
-
您可以使用 -verbose 和 -certs 选项重新运行并发布输出吗?