繁体   English   中英

在Linux机器上签署NSIS安装程序

[英]Sign NSIS installer on Linux box

目前,我在Linux机器上使用NSIS为程序生成安装程序。 NSIS二进制文件已经为Ubuntu编译,使用.nsi脚本没有任何困难。 但是,生成的setup.exe文件是未签名的。 对于通过大多数常见Web浏览器下载安装程序的用户,以及运行时Windows自身的警告,这会导致可怕的警告。

我们想避免这些警告,除非我遗漏了某些内容,否则需要使用Windows工具对生成的setup.exe文件进行签名。 有没有办法在非Windows机器上执行此操作?

不幸的是,每个安装程序都是唯一的(根据客户的请求捆绑不同的文件,并包含唯一的ID),因此我无法在Windows计算机上签署安装程序,然后上传它。

您最好的选择可能是使用: osslsigncode 为我轻松构建(确保提供OpenSSL标头)。 但是,内核模式签名策略可能有困难(将父证书嵌入到根目录中) - 因此您可能仍然需要最终使用WINE。

几个星期前我不得不这样做,不使用葡萄酒。 我所做的是将pfx文件导入到Windows,然后使用“如果可能,在证书路径中包含所有证书”选项将其导出。 然后我按照这个页面上的说明进行操作。

获得所有证书(spc和pvk文件)后,应使用以下命令:

signcode -spc [spc file] -v [pvk file] -a sha1 -$ commercial -t http://timestamp.verisign.com/scripts/timstamp.dll -tr 10 [exe file to sign] 

我不得不安装mono-dev pack:

sudo apt-get install mono-devel

Windows的签名文件使用Microsoft Authenticode签名。 SDK中有一个工具可以签署可执行文件和DLL( signtool.exe )。 您可以使用Wine运行它。

也可以通过Windows API调用来签名文件 - 这些函数可能会在Wine中实现,但我有点怀疑它,因为Authenticode仅由Microsoft使用和实现(据我所知)。

但是这个工具并不是很多 - 它基本上将证书和签名时间戳附加在文件末尾。 Linux也可能存在适应性。

这是一个链接到使用signcode工作的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM