首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“错误: SignerSign()失败”(-2147023673/0x800704c7)

“错误: SignerSign()失败”(-2147023673/0x800704c7)
EN

Stack Overflow用户
提问于 2017-06-17 18:48:35
回答 5查看 6K关注 0票数 10

在使用签名工具在构建服务器上进行代码签名时,jenkins显示了以下错误消息:

代码语言:javascript
运行
复制
Done Adding Additional Store
Error information: "Error: SignerSign() failed." (-2147023673/0x800704c7)
SignTool Error: An unexpected internal error has occurred.

我们在USB令牌上使用EV代码签名证书。所有的工具实际上都是最新的工具。

有什么想法吗?

使用相同的构建任务并在jenkins正在运行的同一台计算机上手动运行它(如下面所述),以及在相同的环境/目录上运行都不是一个问题。

Jenkins服务以具有管理权限的简单用户(而不是本地系统)的身份在Windows 10 pro VM上运行。

有关更多细节,请参见Jenkins日志中的摘录:

代码语言:javascript
运行
复制
  Signiere FlinkySchule.FormularEditor.exe:
  Verbindung zu Token auf- bzw. abbauen
  ***** code signing *****
  Aktueller Pfad des signtool:
  c:\JW\FS\Production\Deployment\Tools\signtool\kits
  Zu signierende Datei:
  c:\JW\FS\Production\Application\Assemblies\FlinkySchule.FormularEditor\bin\Release\\FlinkySchule.FormularEditor.exe
  The following certificate was selected:
      Issued to: Dirk W.

      Issued by: GlobalSign CodeSigning CA - SHA256 - G3

      Expires:   Fri Apr 03 15:58:51 2020

      SHA1 hash: 4187Cxyxyxyxyxyxyxyxyxyxyx7978C4


  Done Adding Additional Store
EXEC : error information: "Error: SignerSign() failed." (2147023673/0x800704c7) [c:\JW\FS\Production\Application\Assemblies\FlinkySchule.FormularEditor\FlinkySchule.FormularEditor.csproj]
EXEC : SignTool error : An unexpected internal error has occurred. [c:\JW\FS\Production\Application\Assemblies\FlinkySchule.FormularEditor\FlinkySchule.FormularEditor.csproj]

一个问题是全局路径长度:即使在2017年,您也会遇到260个字符的路径长度限制。烦人!但是我们解决了这个问题,这个错误有时还是会发生。

EN

回答 5

Stack Overflow用户

发布于 2017-06-28 08:17:40

使用 eToken与Jenkins协同设计

使用杰斯找到解决方案

代码语言:javascript
运行
复制
java -jar jsign-2.0.jar --keystore .\eToken.cfg --alias %yourCertAlias% --storetype PKCS11 --tsaurl http://rfc3161timestamp.globalsign.com/advanced --tsmode RFC3161 --storepass %tokenPassword% %file2sign%

eToken.cfg:

代码语言:javascript
运行
复制
name=eToken
library=c:\WINDOWS\system32\eTPKCS11.dll

使用java keytool获取证书别名

代码语言:javascript
运行
复制
keytool -list -keystore NONE -storetype PKCS11 -providerclass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg

这应该会输出类似于

代码语言:javascript
运行
复制
Keystore-Typ: PKCS11
Keystore-Provider: SunPKCS11-eToken

Keystore enthält 1 Eintrag

te-318f471f-9a0e-4101-bf45-96a656cc2306, PrivateKeyEntry,
Zertifikat-Fingerprint (SHA1): 
41:87:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:X:XX:XX:XX:XX:79:78:C4

也许商店里还有更多的条目。要找到权利,请看一下你证书上的指纹。J符号别名参数所需的别名是示例中以“te-318f4.”开头的字符串。

这部分需要更详细的帮助吗?请看一下信任区

请告诉我,如果您有兴趣知道我们如何在一个单独的构建机器上进行自动构建过程,只使用一个eToken USB设备。

票数 2
EN

Stack Overflow用户

发布于 2017-11-14 22:39:52

我也遇到了这个问题。我能够通过运行Signtool.exe在Jenkins之外复制错误,但是当提示出现令牌密码时,单击cancel。你也会犯同样的错误。

我有一个C程序,它监视赛门铁克提示符并自动输入toke密码。但是Jenkins显然没有在与我的密码助手程序相同的上下文中运行Signtool.exe。因此,我编辑了我的程序,它运行Signtool.exe来运行密码助手程序。但还是没什么好处。然后我意识到,可能是如何在节点上运行Jenkins的问题。我让Jenkins节点运行一个服务。一旦我停止了服务,并通过直接在命令行上运行java命令进行连接,它就工作了!

所以现在我知道了,如果我要在Windows节点上运行signtool,那么确保通过命令行(通过计划的任务)而不是服务来连接节点。这改变了运行Jenkins的上下文,它允许SignTool和令牌提示符很好地运行。

票数 2
EN

Stack Overflow用户

发布于 2017-10-02 22:54:56

我也有同样的问题,并通过安装最新的Windows10SDK,即10.0.15063.0来解决它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44608218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档