在使用签名工具在构建服务器上进行代码签名时,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 pro VM上运行。
有关更多细节,请参见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个字符的路径长度限制。烦人!但是我们解决了这个问题,这个错误有时还是会发生。
发布于 2017-06-28 08:17:40
使用 eToken与Jenkins协同设计
使用杰斯找到解决方案
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
也许商店里还有更多的条目。要找到权利,请看一下你证书上的指纹。J符号别名参数所需的别名是示例中以“te-318f4.”开头的字符串。
这部分需要更详细的帮助吗?请看一下信任区。
请告诉我,如果您有兴趣知道我们如何在一个单独的构建机器上进行自动构建过程,只使用一个eToken USB设备。
发布于 2017-11-14 22:39:52
我也遇到了这个问题。我能够通过运行Signtool.exe在Jenkins之外复制错误,但是当提示出现令牌密码时,单击cancel。你也会犯同样的错误。
我有一个C程序,它监视赛门铁克提示符并自动输入toke密码。但是Jenkins显然没有在与我的密码助手程序相同的上下文中运行Signtool.exe。因此,我编辑了我的程序,它运行Signtool.exe来运行密码助手程序。但还是没什么好处。然后我意识到,可能是如何在节点上运行Jenkins的问题。我让Jenkins节点运行一个服务。一旦我停止了服务,并通过直接在命令行上运行java命令进行连接,它就工作了!
所以现在我知道了,如果我要在Windows节点上运行signtool,那么确保通过命令行(通过计划的任务)而不是服务来连接节点。这改变了运行Jenkins的上下文,它允许SignTool和令牌提示符很好地运行。
发布于 2017-10-02 22:54:56
我也有同样的问题,并通过安装最新的Windows10SDK,即10.0.15063.0来解决它。
https://stackoverflow.com/questions/44608218
复制相似问题