通过后处理器和 jsign“不支持的文件”安装4J 10.0.9 代码签名

问题描述 投票:0回答:1

我们必须改变在 install4j 中对媒体文件和可执行文件进行签名的方式。现在我们必须将代码签名证书存储在 HSM 等安全设备上。我们现在使用 DigiCert ONE 及其工具 smctl。

我们的构建环境:

  • 在 Linux 上运行的 Jenkins 构建服务器
  • Install4J 版本 10.0.9(计划升级到版本 11)
  • 使用 smctl 通过 DigiCert ONE 进行代码签名
  • Jsign版本6.0.0

因此,我禁用了 Windows 媒体文件的代码签名,然后在单独的步骤中对它们进行签名,其中我还使用 smctl 工具和 jsign 作为签名工具。

我当前面临的问题是,媒体文件中包含的可执行文件不再经过签名。由于 install4j 中禁用了代码签名选项。 我决定使用后处理器来完成这项工作,并在 Windows 媒体文件 -> Media/windows-32/Executableprocessing 中配置它 我在那里启用了选项“为每个可执行文件运行命令”并插入以下命令进行签名:

/opt/codesigning/smtools-linux-x64/smctl sign --keypair-alias ${compiler:codeSigningKeypairAlias} --config-file ${compiler:codeSigningPkcs11Config} --input $OUTFILE --verbose

SMCTL 使用 jsign 工具作为 Windows 可执行文件的默认工具。但由于某种原因 jsign 无法对文件进行签名。 Jsign 始终导致“文件不受支持”。您可以查看日志片段:

signCommand command for file /tmp/install4j5073564965492722622_dir/set1/signed11460690974641472065.exe FAILED
Compiling launcher 'application-update-diagnosis':
using icon file ./icon.ico
Creating GUI mode application.
Running post-processor
Post-processor command is "/opt/codesigning/smtools-linux-x64/smctl" "sign" "--keypair-alias" "OUR_KEYPAIR_ALIAS" "--config-file" "/opt/codesigning/pkcs11properties.cfg" "--input" "/tmp/install4j5073564965492722622_dir/set1/signed4735947293422229253.exe" "--verbose"

Command : jsign -keystore "/opt/codesigning/pkcs11properties.cfg" -storepass NONE -storetype PKCS11  -alg SHA-256   -tsaurl http://timestamp.digicert.com  -alias OUR_KEYPAIR_ALIAS "/tmp/install4j5073564965492722622_dir/set1/signed4735947293422229253.exe" 
Error : 
exit status 1: Picked up JAVA_TOOL_OPTIONS: -Dmaven.ext.class.path="/home/jenkins/workspace/IPL-17095_fix_unsigned_exe_files@tmp/withMavend45d2b78/pipeline-maven-spy.jar" -Dorg.jenkinsci.plugins.pipeline.maven.reportsFolder="/home/jenkins/workspace/IPL-17095_fix_unsigned_exe_files@tmp/withMavend45d2b78" 

jsign: Unsupported file: /tmp/install4j5073564965492722622_dir/set1/signed4735947293422229253.exe
Try `jsign --help' for more information.
signCommand command for file /tmp/install4j5073564965492722622_dir/set1/signed4735947293422229253.exe FAILED

问候

code-signing install4j digicert
1个回答
0
投票

$OUTFILE
是错误的变量,仅当您的工具具有不同的输入和输出文件时才适用。您必须使用的输入文件的变量是
$EXECUTABLE

© www.soinside.com 2019 - 2024. All rights reserved.