【问题标题】:Since which java version SHA-256 and SHA256withRSA are supported for timestamp at signed jar files从哪个 java 版本 SHA-256 和 SHA256withRSA 支持签名 jar 文件的时间戳
【发布时间】:2017-04-26 10:17:50
【问题描述】:

我的 jar 文件的签名中有以下条目

Timestamped by "CN=GlobalSign TSA for Advanced - G3 - 001-02, O=GMO GlobalSign K.K., C=JP" on Mo Apr 10 11:48:34 UTC 2017
 Timestamp digest algorithm: SHA-256
 Timestamp signature algorithm: SHA256withRSA, 2048-bit key

我已经发现时间戳摘要算法中的 SHA-256 和时间戳签名算法中的 SHA256withRSA 在 java 版本低于 1.7.0_76 的系统上运行 jar 文件时会导致问题(jar 文件被视为未签名)。

谁能告诉我时间戳摘要和时间戳签名支持这两种算法的哪些 java 版本?

【问题讨论】:

  • 请在您投反对票时留下评论。谢谢!
  • 我不明白为什么这被否决了。这是一个非常重要的问题,在 oracle 网站上没有答案。新的 JRE 需要 SHA-256 签名,但是旧 Java 版本无法识别 SHA-256。我们该如何处理这种情况?
  • 感谢您对 java 1.9 的提示。正如你所说,SHA-1 很快就会被禁用 (java.com/en/jre-jdk-cryptoroadmap.html)。

标签: java security sha256


【解决方案1】:

低于 1.7.0_76 的 Java 版本不支持 SHA-256 时间戳,由 https://bugs.openjdk.java.net/browse/JDK-8049480 引起 (修复包含在 1.7.0_76 http://www.oracle.com/technetwork/java/javase/2col/7u76-bugfixes-2389098.html

根据“Oracle JRE 和 JDK 加密路线图”,SHA-1 仍然没有计划在代码签名时禁用。

所以我认为目前最好的选择(支持旧 Java 版本)是使用 SHA-1 作为时间戳算法。 (使用低于 8u101、7u111 进行签名在 8u101、7u111 或更高版本上使用 -tsadigestalg 选项)

我已经测试了签名的 jar 文件

Digest algorithm: SHA-256
Signature algorithm: SHA256withRSA, 2048-bit key
Timestamp digest algorithm: SHA-1
Timestamp signature algorithm: SHA1withRSA, 2048-bit key

在 Java 7、8、9(ea+174) 上工作正常

【讨论】:

  • 我基本同意你的回答,谢谢。不过,我担心 SHA-1 何时最终会被 java 弃用。正如您在答案中所写以及link 中所述,SHA-1 暂时不会被弃用。尽管如此,我们的软件已向许多客户推出,我们希望避免不必要的更新。
【解决方案2】:

一种解决方案是不对 jar 文件添加时间戳。 等待更好的推荐...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-01
    • 2020-05-11
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    相关资源
    最近更新 更多