2013-04-09 134 views
13

我们最近购买了EV代码从DigiCert签名证书签署我们的MSI来解决在Windows的SmartScreen警告消息。问题在于证书已交付给不允许导出私钥的USB令牌。我们的构建环境位于托管虚拟机上,因此我们无法将USB令牌插入主机虚拟机。如何使用虚拟机上的EV代码签名证书签署MSI

有没有人有在托管虚拟机上使用EV代码签名证书的解决方案?所有证书供应商是否将这种类型的证书传递给硬件令牌?你如何在使用这种类型的Cert的虚拟环境中对MSI进行代码签名?

+0

我有同样的问题。有关于此的任何发现? [自动化推广的验证(EV)代码签名]的 – 2013-04-23 03:29:45

+0

可能重复(http://stackoverflow.com/questions/17927895/automate-extented-validation-ev-code-signing) – 2015-06-17 05:38:49

回答

1

EV代码签名证书需要使用特殊硬件来存储私钥。这是什么让他们比标准证书更昂贵和更安全的一部分。我的建议是在主机上使用signtool.exe签署可执行文件作为后期构建步骤。

普通代码签名证书不具备的硬件要求,但他们不作为“SmartScreen筛选器友好”作为EV证书。

0

包括VMware在内的一些虚拟化软件允许USB设备被重定向。

+1

...,并确保您连接到您的虚拟机与vnc,而不是远程桌面 – azhrei 2015-08-12 05:20:59

+0

@azhrei您知道为什么在使用远程桌面时加密狗似乎已断开连接?一旦我在vmware中使用控制台窗口,它似乎没问题(证书软件会看到加密狗) – 2016-04-11 13:20:00

+0

@NeilVarnas我不知道为什么 - 我猜测加密狗驱动程序明确要求(并检查)您是否在控制台上出于安全目的 – azhrei 2016-04-12 07:27:01

2

我对我们完全没有问题。我们在不到15分钟的时间内从支持PFX(文件)的标准代码签名证书切换到支持USB代币的EV代码签名证书。

我只需将USB令牌设备连接到客户 OS在VMWare(见的设备客户端操作系统窗口的右下角图标),安装必要的设备驱动程序,设置的选项需要密码来解锁只有一次会议,然后很好去。

至于如何签名,您可以像使用任何其他证书一样签名。如果操作系统的证书存储区中没有其他适用的代码签名证书,则则不需要指定证书的位置

我担心我们会有麻烦,但没有。所以,我不认为你会,并且不知道你为什么会有麻烦。

+0

在虚拟机上的isntallign证书之后,我可以使用cmd成功签署一个程序集,但每次构建代理(在我们的例子中为Team City)尝试执行命令行或使用命令行调用批处理文件时,返回“SignTool错误:未找到符合所有给定条件的证书”。构建代理是该机器上的管理员。你有没有遇到过这个?如果不是,你可以详细说明你的设置? – 2016-04-11 13:23:14

+0

@NeilVarnas将'/ debug'添加到您的signtool cmds中,并根据signtool在TeamCity案例中删除所有证书的方式进行解决。您可能可以调整您的signtool调用,以向signtool提供关于选择哪个证书的提示。 – azhrei 2016-04-12 07:24:38

+0

@NeilVarnas不,我从来没有遇到过这样的事情。听起来像特定于您的构建代理的东西。我所有的签名都是通过signtool.exe。 – 2016-04-15 06:29:17

0

对于有此问题的其他人,我们使用VNC服务器连接到具有令牌的VM。它不适用于仅RDP的VNC。

显然,VNC就像有控制台访问盒(就RV Dongle而言)。