缺省情况下,现在限制使用 SHA-1 算法签名的 JAR,并被视为在 Java SE 17 中未签名。 这适用于用于对 JAR 进行摘要,签名和 (可选) 时间戳记的算法。 它还适用于代码签署者和时间戳记权限的证书链中证书的签名和摘要算法,以及用于验证是否已撤销这些证书的任何 CRL 或 OCSP 响应。
为了降低先前添加了时间戳记的应用程序的兼容性风险或者要使用专用 CA,此策略存在以下两个例外:
在未来的 JDK 发行版中可能会移除这些例外。
SHA-1 不再被视为安全,因此不应使用。 用户可以自行承担风险,通过修改 java.security 配置文件 (或使用 java.security.properties 系统属性覆盖该配置文件) 并除去 SHA1 jdkCA & 用法 SignedJAR & 来除去这些限制。 denyAfter 2019-01-01 来自 jdk.jar.disabledAlgorithms 安全性属性的 jdk.certpath.disabledAlgorithms 安全性属性和 SHA1 jdkCA & denyAfter 2019-01-01 。
有关此限制的更多信息,请参阅 禁用 SHA-1 签名 JAR。