在尝试自动编译和签名特定的基于 NSIS 的二进制文件时,我遇到了一些奇怪的行为。即,makensis
在下运行wine
以编译可执行文件,然后osslsigncode
用于对二进制文件进行签名。
可执行文件似乎构建得很好,因为它适用于 Windows 系统,但是签名存在问题(缺乏更好的词)。由于代码签名证书采用 PKCS#12 格式,因此使用的命令如下所示:
osslsigncode sign -pkcs12 <pkcs12-file> -pass <pkcs12-password> \
-n "Your Application" -i http://www.yourwebsite.com/ \
-in yourapp.exe -out yourapp-signed.exe
我从 osslsigncode 收到“Succeeded”消息,好像签名正常,但是当二进制文件在 Windows(本例中为 Win 7)上运行时,UAC 说:
发布者:未知
奇怪的是,当我打开从原始.p12
文件中提取的证书,查看它的信息时,Windows 之后能够识别发布者和数字签名,好像它以某种方式意识到了证书路径......?
任何意见,将不胜感激。
使用的编辑 1
osslsigncode 版本:1.5.2 和 1.7.1
编辑 2
为了比较,我尝试用 签名SignTool
,显然它没有任何问题。所以这看起来像 cert + osslsigncode
issue,但我不知道它到底是什么。
我还osslsigncode
用另一个证书尝试了完全相同的 EXE,为了让事情更有趣,它起作用了......(我注意到 2 个证书的证书路径不同)。
一些证书详细信息:
1)非工作证书
版本:V3
公钥:RSA 2048 bits
签名哈希算法:sha1
签名算法:sha1RSA
证书路径:USERTrust -> Comodo Code Signing CA 2 -> NonWorkingCert
2)工作证书
版本:V3
公钥:RSA 2048 位
签名哈希算法:sha1
签名算法:sha1RSA
证书路径:USERTrust -> UTN-UserFirst-Object -> Comodo Code Signing CA 2 -> WorkingCert