MacOS使用jpackage的--mac-签名参数时无法找到证书
MacOS下jpackage构建app-image签名证书检测失败问题
环境信息
使用的JDK版本:
openjdk 17.0.2 2022-01-18 OpenJDK Runtime Environment (build 17.0.2+8-86) OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
构建命令
通过bash脚本执行jpackage构建:
"$JDK/bin/jpackage" --type app-image --input "$INPUT/target/" --dest "$INPUT/target/output" --name "$NAME" \ --main-jar my-jar.jar --main-class org.test.Launcher --add-modules "$JDK_MODULES" \ --resource-dir "$RES" --copyright "$COPYRIGHT" --app-version "$VERSION" --description "$DESC" --vendor "$VENDOR" \ --verbose --mac-package-identifier "$IDENTIFIER" --mac-sign --mac-package-signing-prefix "$IDENTIFIER" \ --mac-signing-key-user-name "My Organization (USER_ID_OF_CERTIFICATE)" \ --mac-signing-keychain "/Users/MyUser/Library/Keychains/login.keychain-db"
执行报错信息
命令执行后输出错误如下:
[16:59:06.497] Running /usr/bin/security [16:59:06.527] Command [PID: 20771]: /usr/bin/security find-certificate -c Developer ID Application: My Organization (USER_ID_OF_CERTIFICATE) -a /Users/MyUser/Library/Keychains/login.keychain-db [16:59:06.527] Output: keychain: "/Users/MyUser/Library/Keychains/login.keychain-db" version: 512 class: 0x80001000 attributes: [omitted by me] [16:59:06.530] Returned: 0 [16:59:06.531] jdk.jpackage.internal.ConfigException: Signature explicitly requested but no signing certificate found at jdk.jpackage/jdk.jpackage.internal.MacAppBundler.doValidate(MacAppBundler.java:136) at jdk.jpackage/jdk.jpackage.internal.AppImageBundler.validate(AppImageBundler.java:70) at jdk.jpackage/jdk.jpackage.internal.Arguments.generateBundle(Arguments.java:675) at jdk.jpackage/jdk.jpackage.internal.Arguments.processArguments(Arguments.java:550) at jdk.jpackage/jdk.jpackage.main.Main.execute(Main.java:91) at jdk.jpackage/jdk.jpackage.main.Main.main(Main.java:52) [16:59:06.533] jdk.jpackage.internal.PackagerException: Bundler Mac Application Image skipped because of a configuration problem: Signature explicitly requested but no signing certificate found Advice to fix: Specify a valid mac-signing-key-user-name and mac-signing-keychain at jdk.jpackage/jdk.jpackage.internal.Arguments.generateBundle(Arguments.java:688) at jdk.jpackage/jdk.jpackage.internal.Arguments.processArguments(Arguments.java:550) at jdk.jpackage/jdk.jpackage.main.Main.execute(Main.java:91) at jdk.jpackage/jdk.jpackage.main.Main.main(Main.java:52) Caused by: jdk.jpackage.internal.ConfigException: Signature explicitly requested but no signing certificate found at jdk.jpackage/jdk.jpackage.internal.MacAppBundler.doValidate(MacAppBundler.java:136) at jdk.jpackage/jdk.jpackage.internal.AppImageBundler.validate(AppImageBundler.java:70) at jdk.jpackage/jdk.jpackage.internal.Arguments.generateBundle(Arguments.java:675) ... 3 more [16:59:06.531] No certificate found matching [Developer ID Application: My Organization (USER_ID_OF_CERTIFICATE)] using keychain [/Users/MyUser/Library/Keychains/login.keychain-db]
证书有效性验证
已确认所需的Developer ID Application证书存在于指定钥匙串中:
security find-identity -v -p codesigning 1) HASH_ID_HERE "Developer ID Application: My Organization (USER_ID_OF_CERTIFICATE)" 1 valid identities found
关联前置问题
此前未添加mac签名参数时,曾因libjli.dylib签名无效导致苹果公证失败,错误信息如下:
{ "logFormatVersion": 1, "status": "Invalid", "statusSummary": "Archive contains critical validation errors", "statusCode": 4000, "issues": [ { "severity": "error", "code": null, "path": "path/to/my/APP.app/Contents/runtime/Contents/MacOS/libjli.dylib", "message": "The signature of the binary is invalid.", "architecture": "x86_64" } ] }
已查阅相关资料但未解决问题,寻求帮助。
内容的提问来源于stack exchange,提问作者João Bolsson
相关产品推荐
相关产品推荐

