在我们的构建服务器上使用 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/