我需要在Linux上数字签名一个PE文件(实际上是EFI)。我找到了3种为PE文件签名的工具:pesign
、osslsigncode
和signcode
(mono),但似乎都不太适合我的需要。问题是,密钥位于硬件令牌上,无法导出。因此,我必须创建一个证书数据库,在那里添加令牌驱动程序条目并通过这个DB工作。只有pesign
允许这样做,但它不支持时间戳。osslsigncode
和signcode
支持时间戳,但它们不能使用数据库。
Windows signttool.exe
可以作为单独的步骤执行签名和时间戳。因此,我想,我可以使用pesign
对文件进行签名,然后使用另一个工具对其进行时间戳。但正如我所发现的,osslsigncode
和signcode
不支持单独的时间戳(在osslsigncode
项目中,它在TODO
文件中列出,但在存储库中还没有显示)。
我漏掉了什么工具吗?难道没有太低层次的库可以让我自己编写这样的程序吗?(最好是C/C++/Perl/Python。)我试图从osslsigncode
中获取时间戳代码,但未能轻松地从前面的步骤中分离出来(删除现有签名并添加一个新签名)。
我也试图在葡萄酒下运行signtool.exe
,但没有成功;2)我不确定它是否合法(我不擅长分析EULAs)。
发布于 2015-07-07 07:46:34
自2015年3月以来,osslsigncode中有一个补丁,它允许您通过PKCS#11令牌上的密钥对代码进行签名。这还不是正式发布的一部分。所以你必须自己建造,但它对我来说很有魅力。
一个示例调用如下所示:
osslsigncode sign -pkcs11engine /usr/lib/engines/engine_pkcs11.so -pkcs11module /usr/lib/libeTPkcs11.so -certs ~/mysigningcert.pem -key 0:42ff -in ~/filetosign.exe -out ~/signedfile.exe
-pkcs11module
开关将PKCS#11库作为参数,-key
的参数为slotID:keyID
格式。
发布于 2016-06-08 21:12:57
SignServer企业版支持使用Authenticode对PE文件进行签名和时间戳.
此外,通过PKCS#11接口支持硬件令牌。
SignServer通常安装在单独的服务器或VM上,最好在Linux上运行(但也支持Windows )。
您想要签名的文件可以通过HTTP简单地发送到服务器,然后响应就是签名的文件。
发布于 2021-03-11 14:13:16
当前-t
具有时间戳选项osslsigncode
osslsigncode sign \
-pkcs12 cert.pfx -pass "**********" \
-t http://timestamp.digicert.com \
-in app.exe -out app-sign-with-timestamp.exe
https://stackoverflow.com/questions/28057187
复制相似问题