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

plicqrtu  于 5个月前  发布在  Jenkins
关注(0)|答案(6)|浏览(56)

在我们的buildserver上使用signtool进行代码签名时,jenkins显示了以下错误消息:

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专业版虚拟机上运行。
有关更多详细信息,请参阅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个字符的路径长度限制。烦人!但我们解决了这个问题,错误仍然有时会发生。

ewm0tg9j

ewm0tg9j1#

使用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的alias参数所需的alias是示例中以“te-318 f4.”开头的字符串。
需要更多关于此部分的详细帮助?请查看Trustzone
如果您有兴趣了解我们如何使用一个eToken USB设备在单独的构建机器上进行自动构建过程,请告诉我。

slmsl1lt

slmsl1lt2#

我也遇到了这个问题。我可以通过运行Signtool.exe在Jenkins之外复制错误,但是 * 当出现令牌密码提示时,单击取消。你会得到相同的错误 *。
我有一个C程序,它监视Symantec提示符并自动输入toke密码。但Jenkins显然没有在与我的密码助手程序相同的上下文中运行Signtool.exe。因此,我编辑了运行Signtool.exe的程序来运行密码助手程序。它仍然不好。然后我意识到,可能是Jenkins在节点上运行的问题。我有Jenkins节点运行服务。一旦我停止服务,并通过直接在命令行上运行java命令进行连接,它就工作了!
所以现在我知道了,如果我要在Windows节点上运行signtool,请确保通过在命令行上运行(通过计划任务)连接节点,而不是服务。这会改变Jenkins运行的上下文,从而允许SignTool和令牌提示符发挥作用。

bpzcxfmw

bpzcxfmw3#

我也遇到了同样的问题,并通过安装最新的Windows 10 SDK解决了这个问题,即10.0.15063.0

deyfvvtc

deyfvvtc4#

我省略了副署:

/tr http://tsa.starfieldtech.com

字符串

bsxbgnwa

bsxbgnwa5#

我必须指定应该使用哪个证书进行签名

/n "My Certificate Name"

字符串
编辑:对不起,我的错误代码是不同的,但谷歌把我带到这里,所以仍然可能是有帮助的。(-2146435071/0x80100001)

euoag5mw

euoag5mw6#

请确保您的CI机器以正确的用户(您解锁令牌的用户)登录。例如,我们使用SafeNet身份验证客户端。我们在机器启动后登录令牌。后来有人重新安装了处理我们签名的Bamboo代理,但没有将服务设置为以正确的用户登录,因此对于该用户,令牌没有登录。

相关问题