【发布时间】:2020-04-14 03:40:27
【问题描述】:
对于学校,我需要签署一个罐子,并提供了以下教程https://docs.oracle.com/javase/tutorial/security/toolsign/。
所以,我从制作和编译一个打印“Hello World!”的简单程序开始。并使用以下命令将其放入 jar 中:
jar cvfm Hello.jar Hello.class MANIFEST.M
之后我使用以下命令生成我的密钥,它是自签名的并不重要。
keytool -genkey -alias indy -keystore indystore
生成我的密钥后,我使用以下命令对我的 jar 进行签名
jarsigner -tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp -keystore indystore -signedjar SignedHello.jar Hello.jar indy
现在,当我想验证我签名的 jar 时,我遇到了多个错误,我不知道为什么。如果这很重要,我正在使用adoptopenjdk 11。
jarsigner -verify -keystore indystore SignedHello.jar
我得到的错误:
- 此 jar 包含证书链无效的条目。
原因:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
- 此 jar 包含签名者证书是自签名的条目。
带有警告的详细输出如下所示:
【问题讨论】:
-
这些是警告而不是错误。我将创建一个单独的信任库,其中仅包含要信任的证书。毕竟,这就是它在现实世界中的使用方式,信任库不会包含私钥。当然,“自签名”警告不会消失。
标签: java jar keytool jarsigner jar-signing