【问题标题】:What does the "verify" parameter to java.util.jar.JarFile mean, precisely?java.util.jar.JarFile 的“验证”参数究竟是什么意思?
【发布时间】:2015-06-21 22:12:18
【问题描述】:

java.util.jar.JarFile 的构造函数采用verify 参数,其唯一文档似乎是the JavaDoc 中的这句话:

verify - 如果已签名,是否验证 jar 文件。

不过,这显然不是很精确。 JarFile 的验证过程是什么?它是否仅验证 Jar 文件未被篡改,或者它是否还以某种未指定的方式验证签名者证书是否可信?如果验证失败,或者签名文件格式不正确,会发生什么情况?验证是急切的还是懒惰的,&c&c?

我觉得这种似乎与核心 Java 安全性如此密切相关的过程的文档记录如此之差,这通常很奇怪,所以我担心这可能被认为是我不应该使用的“内部”API。是这样吗,还是我可能只是在某个地方错过了外部文档,或者只是一些奇怪的疏忽?

【问题讨论】:

标签: java jar jar-signing


【解决方案1】:

可能值得查看最新文档,而不是 2004 的文档。 :-)

up-to-date documentation 中,它说:

如果在打开签名的 jar 文件时打开了验证标志,则会根据嵌入在文件中的签名来验证文件的内容。请注意,验证过程不包括验证签名者的证书。调用者应检查JarEntry.getCodeSigners() 的返回值,以进一步确定签名是否可信。

【讨论】:

  • 哈哈,对,这是真的。我通常会尽量保持与 Java 5 兼容,因此我仍然将那个版本的 JavaDoc 标记为书签。但是,即使是较新的文档似乎也没有描述可能的故障模式之类的事情,除非我仍然是盲目的。
  • @Dolda2000:我希望如果构造函数接受标志,它会在允许构造对象之前进行验证。但是,是的,如果它会说一种或另一种方式会很好,因为任何一种(主动的,或者当您尝试从条目中读取时只是被动的)都是一种合理的实现方法。当然,您可以查看代码并找出答案——但这告诉您它做了什么,而不是它指定要做什么。至少更新的文档回答了证书问题。 :-)
猜你喜欢
  • 1970-01-01
  • 2011-03-12
  • 2014-10-29
  • 2016-01-27
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多