如何使用代码签名证书对exes和dlls进行签名

13

我从Thawte购买了代码签名证书,但整个过程让我感到非常沮丧。

我现在手头有以下文件:

  • .spc / .p7b 文件
  • .pvk 文件

(注意:我没有从他们那里得到 pfx 文件。不知为什么,但我已经跟他们的技术支持斗争了一个星期)

无论如何,在他们的网站上和微软的网站上,我都找到了关于 signcode.exe 的“帮助”链接,但对我来说这没用,因为我找不到这个 exe 文件,但我有 signtool.exe。

不幸的是,我对命令行参数在这个MS帮助网站上列出的参数感到困惑。

具体来说,我该使用哪些参数以及怎样设置值呢?我尝试了我认为很明显的方法,但根本不起作用。

我可以让签名向导工作,但我需要它在 hudson CI 批处理文件中以非交互方式工作。

这似乎不应该那么困难,但到目前为止都是黑科技。

感谢任何帮助。

1个回答

12

首先,您可以使用在http://msdn.microsoft.com/en-us/library/ff549703(VS.85).aspx中介绍的pvk2pfx工具生成自己的pfx文件。

示例:

pvk2pfx -pvk cert.pvk -spc cert.spc -pfx cert.pfx -pi password

这应该能解决问题。

其次,你需要的工具是 signtool。 http://msdn.microsoft.com/en-us/library/aa387764(VS.85).aspx

signtool sign /?

这可以帮助你获取帮助信息,但你可能真正需要的是基本命令:

signtool sign /f cert.pfx /p password target.exe

哪种方法可以签署target.exe。如果您想将证书放入计算机的证书存储区(这是CSP部分),则情况会变得更加复杂。然而,这对于在许多开发机器上进行签名或在构建实验室机器上进行签名非常有用,因为您希望避免将证书放入源代码控制。


是的,signtool就是我想要使用的工具,但如果我不使用pfx文件,实际上没有解释这些参数是什么意思。(假设你对证书的术语非常熟悉。) - Tim
问题在于我试图使用spc和pvk文件,而不是pfx文件,因为我不知道pvk转pfx的实用程序。谢谢! - Tim
11
你几乎肯定想要使用/t http://timestamp.verisign.com/scripts/timestamp.dll(你可以选择其他服务器,但通常VeriSign是一个不错的选择)选项添加时间戳——否则,在证书一两年后过期后,签名将不会被标记为有效。时间戳命令应该是“基本命令”的一部分,因为太多人似乎会忘记它,在以后遇到问题。 (请注意,/t命令有一个空格,以防止“http”被删除) - BCran

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