ECDSA 算法在 Java 中不可用 jlink
ECDSA Algorithms not available in Java with jlink
我正在编写一个 Java14 应用程序,它应该使用 SHA256withECDSA
、SHA384withECDSA
和 SHA512withECDSA
,但我遇到了 jlink
的特殊副作用:
- 当 运行 具有标准 JDK/JRE 14 运行时的应用程序时,算法正在显示(成功加载 SunEC)
- 当 运行 具有优化版本的 JRE 运行时的应用程序,使用 jlink AND 包括
jdk.crypto.ec
模块时,SunEC 未加载全部和算法不可用
我知道 OpenJDK 错误跟踪器中的 this Ticket,但我不明白为什么在优化的 jlink 版本中有不同的行为。
在jlink生成的runtime文件夹中,还有libsunec.so
.
我用这个 SO snippet 打印出可用的算法,我得到以下输出:
MD2withRSA
MD5andSHA1withRSA
MD5withRSA
NONEwithDSA
NONEwithDSAinP1363Format
RSASSA-PSS
SHA1withDSA
SHA1withDSAinP1363Format
SHA1withRSA
SHA224withDSA
SHA224withDSAinP1363Format
SHA224withRSA
SHA256withDSA
SHA256withDSAinP1363Format
SHA256withRSA
SHA384withRSA
SHA512/224withRSA
SHA512/256withRSA
SHA512withRSA
出于相同和相关的原因,使用策略文件验证已签名的 Jar 不起作用。
谁能explain/point我应该找什么?
编辑:jlink 运行时是使用以下参数构建的:
jlink --strip-debug \
--strip-native-commands \
--bind-services \
--no-header-files \
--no-man-pages \
--compress=2 \
--module-path ${JAVA_HOME}/jmods \
--add-modules java.desktop,java.smartcardio,java.management,java.sql,java.logging,java.net.http,java.xml.crypto,jdk.crypto.ec \
--output jlink-runtime
这是现在 JDK 的 official bug。
There is currently no support for signed JARs on the application module path that are signed with EC certs. The reason is that module path is scan early during VM startup, long before code outside of java.base can execute. JDK-8215932 tracks the same issue.
我正在编写一个 Java14 应用程序,它应该使用 SHA256withECDSA
、SHA384withECDSA
和 SHA512withECDSA
,但我遇到了 jlink
的特殊副作用:
- 当 运行 具有标准 JDK/JRE 14 运行时的应用程序时,算法正在显示(成功加载 SunEC)
- 当 运行 具有优化版本的 JRE 运行时的应用程序,使用 jlink AND 包括
jdk.crypto.ec
模块时,SunEC 未加载全部和算法不可用
我知道 OpenJDK 错误跟踪器中的 this Ticket,但我不明白为什么在优化的 jlink 版本中有不同的行为。
在jlink生成的runtime文件夹中,还有libsunec.so
.
我用这个 SO snippet 打印出可用的算法,我得到以下输出:
MD2withRSA
MD5andSHA1withRSA
MD5withRSA
NONEwithDSA
NONEwithDSAinP1363Format
RSASSA-PSS
SHA1withDSA
SHA1withDSAinP1363Format
SHA1withRSA
SHA224withDSA
SHA224withDSAinP1363Format
SHA224withRSA
SHA256withDSA
SHA256withDSAinP1363Format
SHA256withRSA
SHA384withRSA
SHA512/224withRSA
SHA512/256withRSA
SHA512withRSA
出于相同和相关的原因,使用策略文件验证已签名的 Jar 不起作用。
谁能explain/point我应该找什么?
编辑:jlink 运行时是使用以下参数构建的:
jlink --strip-debug \
--strip-native-commands \
--bind-services \
--no-header-files \
--no-man-pages \
--compress=2 \
--module-path ${JAVA_HOME}/jmods \
--add-modules java.desktop,java.smartcardio,java.management,java.sql,java.logging,java.net.http,java.xml.crypto,jdk.crypto.ec \
--output jlink-runtime
这是现在 JDK 的 official bug。
There is currently no support for signed JARs on the application module path that are signed with EC certs. The reason is that module path is scan early during VM startup, long before code outside of java.base can execute. JDK-8215932 tracks the same issue.