2012-02-21 90 views
7

失败作为我们构建系统的一部分,我们使用signtool.exe用证书来签署我们的二进制文件一旦被建立。偶尔(这是很难说什么时候会罢工),签约失败:SignTool.exe偶尔退出码1

error MSB3073: The command "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\signtool.exe" [...] exited with code 1. 

按照MSDN的退出代码为1意味着有签署文件的错误。我可以验证该文件没有签名。

我也注意到,偶尔,时间戳部分超时了不同的错误消息,尽管该文件仍然被签署(不带时间戳)。

如何排查和修复这些看似随意的,不一致的签名失败?

+0

我有同样的经历:signtool偶尔在时间戳失败。除了重新运行signtool,似乎没有解决方案。 – 2012-02-21 16:27:24

+0

@ EugeneMayevski'EldoSCorp有人报告更新他们的Windows XP证书作品,以及其他一些奇怪的东西。我想要一个明确的答案,因为失败的构建对我来说非常严重。但我担心你是对的。 – ashes999 2012-02-21 18:08:47

+1

假设您的时间戳服务器完全无法访问(网络电缆拔出等)。为了同样的目的,signtool或其他工具如何能够处理这个问题?当然,我希望signtool对失败更加宽容,并且试图再次执行时间戳,但是您必须为可能的时间戳失败做好准备。 – 2012-02-21 18:14:48

回答

5

我强烈怀疑时间戳服务器的连接失败,导致偶尔发生故障。也许你在有问题的时候检查你的系统事件日志中丢失的连接。

+0

如果是这样的话,我会如何纠正呢?我不控制时间戳服务器。 – ashes999 2012-02-21 20:26:37

+0

几乎可以做任何事情。检查你的基础设施我们曾经遇到网络电缆有问题的问题。那很简单。由于维护可能会造成本地停机。可能是您的互联网提供商的问题。我的建议(就像Eugene Mayevski'EldoS Corp解释的那样):实施一个重试机制。不要让汇编签名成为您流程中时间关键的部分。 – 2012-02-21 21:15:03

+0

你可以编辑你的答案,提到构建过程应该更强大?这就是我最终做的。 – ashes999 2012-03-01 22:17:58

2

我有同样的问题。发生这种情况是因为MS反恶意软件进程MsMpEng.exe检查二进制文件并且不允许任何人访问它。 为了解决这个问题,我在RAM磁盘上构建了二进制文件,并且它工作正常。

2

我刚刚到这个问题,在Windows 8.1,所以它不是Windows XP的根证书的问题,有些人引用。

我发现问题造成的,因为签字的.exe文件也运行。

如果运行CMD提示符signtool并尝试注册它,你会得到一个有用的短信告诉你什么是错的,从CreateProcess的比返回码1(好多了()。

停止运行过程并能够签字确定

1

在我的情况下,解决方案中的.pfx文件是旧的,直到有人告诉我用新的有效证书文件替换证书文件,我继续得到“失败退出码1" 的错误。

意义,确保该证书文件是有效的,没有过期。