【问题标题】:Is it possible to dual-sign installer and uninstaller with sha1 and sha256 certificates?是否可以使用 sha1 和 sha256 证书对安装程序和卸载程序进行双重签名?
【发布时间】:2015-08-18 20:52:28
【问题描述】:

是否可以在 Inno Setup 中同时使用 sha1 和 sha256 对卸载程序和安装程序进行签名?

我知道它是possible to sign 可执行文件,通过命令工具有两个证书,但想知道这是否可以通过 Inno 中的SignTool 实现。

【问题讨论】:

  • 为什么不可能呢?您可以传递一个批处理文件作为您的signtool,它会调用signtool.exe 两次。

标签: inno-setup signtool verisign


【解决方案1】:

自动应答...

是的,这是可能的。正如@Wosi 建议的那样,您可以编写一个批处理,然后添加$f 参数来调用它。

样本批次(signtool.bat):

@echo off

"PATH_TO_SIGNTOOL\signtool.exe" sign /v /du "COMPANY_NAME" /fd sha1 /t "http://timestamp.verisign.com/scripts/timstamp.dll" /f "sha1_cert.pfx" /p PASSWORD %1

set SIGN_RESULT_1=%ERRORLEVEL%

"PATH_TO_SIGNTOOL\signtool.exe" sign /as /v /du "COMPANY_NAME" /fd sha256 /tr "http://timestamp.comodoca.com/rfc3161" /td sha256 /f "sha256_cert.pfx" /p PASSWORD %1

set SIGN_RESULT_2=%ERRORLEVEL%

set /a RESULT=%SIGN_RESULT_1%+%SIGN_RESULT_2%

if %RESULT% NEQ 0 (
   echo Warning! Signing failed with %SIGN_RESULT_1% for sh1 and %SIGN_RESULT_2% for sha256
   pause
   exit /B %RESULT%
) 

echo Signing succeeded
exit /B 0

然后在 Inno Setup 中,您可以调用signtool.bat $f,其中$f 将传递给%1 进行批处理。

对于 sha1 的 Windows XP 兼容性:删除 /as/tr 替换为 /t,删除 /td(因为它需要 /tr

我会把它留在这里,也许有人会觉得它有帮助。

【讨论】:

【解决方案2】:

我正在使用 InnoSetup 5.5.9。我使用 ISCC 从命令行编译我的脚本。我的安装脚本在 [Setup] 部分包含这两行:

SignTool=sha1
SignTool=sha256

ISCC 命令如下所示:

ISCC "/ssha1=signtool.exe /f <cert.pfx> /p <certpwd> /fd SHA1 /t <timestamp.url> /v $f" "/ssha256=signtool.exe /f <cert.pfx> /p <certpwd> /fd SHA256 /tr <timestamp.url> /td SHA256 /as /v $f" setup.iss

Innosetup 将使用两个证书对安装和卸载进行签名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 2015-08-20
    • 2015-02-26
    • 1970-01-01
    • 2012-01-02
    • 2012-09-10
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多