我的 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
我已经发现在 java 版本低于 1.7.0_76 的系统上运行 jar 文件时,时间戳摘要算法中的 SHA-256 和时间戳签名算法中的 SHA256withRSA 会导致问题(jar 文件被视为未签名)。
谁能告诉我时间戳摘要和时间戳签名支持这两种算法的哪些 Java 版本?
最佳答案
低于 1.7.0_76 的 Java 版本不支持由 https://bugs.openjdk.java.net/browse/JDK-8049480 引起的时间戳 SHA-256 (修复包含在 1.7.0_76 http://www.oracle.com/technetwork/java/javase/2col/7u76-bugfixes-2389098.html 中)
从“Oracle JRE and JDK Cryptographic Roadmap”来看,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) 下工作良好
关于java - 从哪个 java 版本 SHA-256 和 SHA256withRSA 支持签名 jar 文件的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43631322/