有没有一个开源的替代Microsoft signtool工具的方式,可以使用sha2签名exe文件?

4
我们需要使用SHA2算法对Windows软件进行签名,但安装signtool似乎成为了一个问题,因为我在我的机器上安装该软件时遇到了困难。
此外,我想在Linux上对exe文件进行签名。
我们曾经使用signcode执行此任务,但它仅支持SHA1和MD5。自2016年1月1日以来,SHA1和MD5不再被接受。
因此,我想知道执行该任务的替代方法是什么。
更新:我从另一台计算机中提取了一个signtool,并且它确实使用时间戳签名了文件。
signtool.exe sign /fd SHA256 /a  /f file.pfx /p my password /t http://timestamp.verisign.com/scripts/timstamp.dll  filetosign.exe

它似乎已经使用SHA256签名并带有时间戳,但InternetExplorer仍然存在问题。

我认为这个问题仍然需要回答,以了解是否有替代方案,并且这个替代方案是否可在Linux下使用,因为一个可以完成工作的替代工具意味着解决方案不是由于signtool而无法工作,而是由于证书问题或IE问题。


你在Linux上安装SignTool遇到了麻烦吗?因为它是一个Windows应用程序,所以这很有道理。在Windows上让它运行的最简单方法是下载并安装Windows SDK - Cody Gray
不,我还没有尝试过。但我尝试在不同的机器上安装Windows SDK,但都失败了。我只需要自动签名文件。谢谢。 - user1102074
能否在Wine下运行它? - ddbug
是的,这是可能的。 - user1102074
1
“在我看来,这个问题仍然需要回答,以了解是否有替代方案,并且这个替代方案是否适用于Linux。”同意,这些信息非常有价值,自从提出这个问题以来,已经有超过3K的浏览量和两个可行的解决方案被提出。专有技术(如Authenticode)通常需要一般性的“是否存在任何替代方案”的问题,并且对开发人员和整个社区都很有价值。不幸的是,它们可能会引入主观的答案(例如,“Foo是最好的”),这就是为什么它们经常在有任何有用的答案开始出现之前就被关闭的原因。 - tresf
2个回答

2

1
感谢您的回答...虽然有些晚了,因为我在2016年就遇到了这个问题。 - user1102074

1
另一个选择是ebourg/jsign,它是用Java编写的。它可以直接从Java中调用或作为ant任务提供。由于它是用Java编写的,因此可以在任何运行Java的平台上使用,包括(但不限于)Linux、Solaris和macOS。引用自README.md
Jsign是Microsoft Authenticode的Java实现,可让您为Windows、Microsoft Installers(MSI)和PowerShell脚本签名和加时间戳。Jsign是平台无关的,并提供了一种替代本机工具(如Windows上的signcode/signtool或Unix系统上的Mono开发工具)的方法。
Jsign作为主要构建系统(Maven、Gradle、Ant)的易于使用的任务/插件提供。它特别适用于签名由NSIS、msitools、install4j、exe4j或launch4j等工具生成的可执行包装程序和安装程序。Jsign也可以作为命令行工具以编程方式或独立使用。Jsign可免费使用,并根据Apache许可证版本2.0许可。

1
感谢您的回答...虽然我在2016年就遇到了这个问题,但是您的回答来得还是很及时的。 - user1102074
2
很遗憾这个问题被关闭了。jsign最初是在2012年编写的,所以即使在那时它也是一个可行的答案。这些问题确实容易引起主观性答案,但有时仅仅询问某项技术是否存在就已经解决了一半的难题。此外,这个问题相当受欢迎,已经被浏览超过3,000次。就我个人而言,我已经使用jsign在MacOS、Linux和Windows上对Windows可执行文件进行了数年的身份验证签名,这是一个可行的解决方案。 - tresf
由于我是所有者,没有注意到答案。看起来我可以编辑问题,然后答案可能会合适...虽然另一个答案可能是更好的解决方案。 - user1102074

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接