我的 Java 应用程序使用 Oracles JPackage 构建安装,然后使用 ksigncmd 使用 comodo 提供的证书对安装程序进行数字签名
例如
c:\Code\jthink\SongKong>"C:\Program Files\Eclipse Adoptium\jdk-20.0.2.9-hotspot\bin\jpackage" --add-launcher SongKongDebug=songkongdebug.properties --add-launcher SongKongRemote=songkongremote.properties @jpackage.txt
c:\Code\jthink\SongKong>attrib -r SongKong-10.0.exe
c:\Code\jthink\SongKong>C:\Apps\Code\kSign\ksigncmd /d "SongKong Installer" /du "http://jthink.net/songkong" /f c:\code\signing\comodo.pfx /p password SongKong-10.0.exe
工作多年。
为了解决 JPackage 的问题,我想使用 Java 21 版本的 JPackage,但是当我这样做时,签名现在失败并显示 发生了未知错误。请联系您的供应商寻求帮助
例如
c:\Code\jthink\SongKong>"C:\Program Files\Eclipse Adoptium\jdk-21.0.1.12-hotspot\bin\jpackage" --add-launcher SongKongDebug=songkongdebug.properties --add-launcher SongKongRemote=songkongremote.properties @jpackage.txt
c:\Code\jthink\SongKong>attrib -r SongKong-10.0.exe
c:\Code\jthink\SongKong>C:\Apps\Code\kSign\ksigncmd /d "SongKong Installer" /du "http://jthink.net/songkong" /f c:\code\signing\comodo.pfx /p password SongKong-10.0.exe
An unknown error has occured. Please contact your vendor for assistance
Java 21 版本中的哪些更改可能会阻止 ksigncmd 工作?
您使用的证书很可能与 Java21 不兼容
解决方案: 请从供应商处获取新证书
根本原因:每当我们升级到Java版本时,我们都需要重新创建密钥库文件,因为每个Java版本都会删除一些服务提供者并添加/删除支持的算法/证书
参考网址:
https://www.oracle.com/java/technologies/javase/21-relnote-issues.html#JDK-8295894有支持的安全算法列表
https://docs.oracle.com/en/java/javase/21/migrate/removed-tools-and-components.html#GUID-D7936F0D-08A9-411E-AD2F-E14A38DA56A7有以下列表的信息从 Java21 中删除的工具 .
请参阅删除的功能和选项部分
https://www.oracle.com/java/technologies/javase/21-relnote-issues.html
如果 comodo 证书使用任何这些功能,Java21 会阻止它并且不会发生签名。