我注意到在 keytool 文档中它写着 “jarsigner [...] 检查该证书的公钥是否‘可信’,即包含在指定的 keystore 中。” 而 jarsigner 联机帮助页指出 “验证 [...] 时不需要 keystore ”,并且该实用程序将始终根据 jar 提供的证书进行验证。 在我看来,这有点违背了目的,因为它只能证明 jar 自签名以来没有被更改,但不能证明它是由某个特定机构/供应商签名的。
如果用于签署 jar 的证书在运行时系统上未知/不可信,是否有某种方法使验证失败? 或者我必须使用脚本来调用 jarsigner -verify -verbose -keystore ... 并解析输出以查看本地(运行时) keystore 中是否存在签名证书的条目?
困惑, 彼得
最佳答案
jarsigner
实用程序对于 JAR 签名验证毫无用处,因为它不验证签名者证书,不检查签名上的可信时间戳,并且不提供可用的结果(解析控制台输出不是一个很好的解决方案)。
为了避免这种限制,我们选择编写自己的 verify_jar实用程序。
关于keytool - 仅使用可信证书进行 jarsigner 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554632/