windows - "Error: SignerSign() failed."(-2147023673/0x800704c7)

标签 windows jenkins signtool

在我们的构建服务器上使用 signtool 进行代码签名时,jenkins 显示以下错误消息:

Done Adding Additional Store
Error information: "Error: SignerSign() failed." (-2147023673/0x800704c7)
SignTool Error: An unexpected internal error has occurred.

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

有什么想法吗?


使用相同的构建任务并在运行 jenkins 的同一台机器(如下面提到的用户)和相同的环境/目录上手动运行它完全不是问题。

Jenkins 服务作为具有管理员权限的简单用户(而非本地系统)在 Windows 10 专业版虚拟机上运行。

有关更多详细信息,请参阅 Jenkins 日志的摘录:

  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 个字符的路径长度限制。恼人的!但是我们解决了这个问题,有时仍然会出现错误。

最佳答案

使用 eToken 与 Jenkins 进行 EV 协同设计

使用 jsign 找到解决方案

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:

name=eToken
library=c:\WINDOWS\system32\eTPKCS11.dll

使用java keytool获取证书别名

keytool -list -keystore NONE -storetype PKCS11 -providerclass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg

这应该输出类似的东西

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

也许商店里还有一些条目。要找到正确的,请查看您的证书指纹。 jsign 的别名参数所需的别名是示例中以“te-318f4...”开头的字符串

需要关于这部分的更详细的帮助?请看Trustzone .

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

关于windows - "Error: SignerSign() failed."(-2147023673/0x800704c7),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44608218/

相关文章:

Xcodebuild 在带有 cocoapods 的 jenkins 中失败

java - 如何从 Jenkinsfile 执行 Maven 发布?

powershell - 如何在 Powershell 中指定复杂的发布者名称?

signtool - 在IE中解决 "the signature of foo.exe is corrupt or invalid"

windows - 复选框(选中或未选中)

c# - 如何获取有关最近连接的 USB 设备的信息?

html - 一个网页,可以让用户从中下载某个文件,但不会透露该文件的位置——这有可能吗?

c - Windows 上多线程应用程序中非阻塞服务器/监听套接字的最佳方法?

jenkins - 如何通过 Jenkins 脚本控制台设置 “Scan Organization Triggers”?

clickonce - SignTool 未使用 SHA256 签署 ClickOnce 应用程序,仅使用 SHA1