##[error]EXEC(0,0):错误信息:“错误:SignerSign() 失败。(-2146893779/0x8009002d)

##[error]EXEC(0,0): Error information: "Error: SignerSign() failed." (-2146893779/0x8009002d)

提问人:suprasad 提问时间:11/13/2023 更新时间:11/22/2023 访问量:115

问:

在我们的生成服务器 (Windows Server 2019) 上使用 Signtool 时,azure-devops 管道出现以下错误,这是一项DotNetCoreCLI@2任务:

    ##[error]EXEC(0,0): Error information: "Error: SignerSign() failed." (-2146893779/0x8009002d)
EXEC : error information: "Error: SignerSign() failed." (-2146893779/0x8009002d) 
##[error]EXEC(0,0): Error : An unexpected internal error has occurred.
EXEC : SignTool error : An unexpected internal error has occurred. 
Error MSB3073: The command "if Release == Release ("C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\Signtool.exe" sign /sha1 abcd1234 /v /fd sha256 /td sha256 /tr http://timestamp.digicert.com "abcd.dll")" exited with code 1.

我尝试将signtool更新到最新版本,但它仍然与管道完全相同。在服务器上手动运行会给出相同的错误。该任务的参数是:

arguments: '-c $(buildConfiguration) -p:PX_CERT_SNK_PATH=/cert/cert.snk /p:VersionNumber=$(applicationVersion) /p:Platform=x86 /p:CodeSigningCertificateFingerprint=$(codeSigningCertificateFingerprint)'
azure-devops tfs yaml signtool

评论

0赞 Miao Tian-MSFT 11/14/2023
嗨,您的意思是,如果您手动使用Signtool,则在不使用azure-devops管道的情况下也会发生相同的错误吗?顺便说一句,我检查了一下,发现错误代码意味着NTE_INTERNAL_ERROR 0x8009002D An internal consistency check failed.
0赞 Emmanuel Bourg 11/14/2023
密钥是否存储在 Azure KeyVault 中?
0赞 suprasad 11/15/2023
谢谢。问题现已修复。对于来自 Digicert 的最新证书,他们有这种需求,即签名不能在单个项目文件级别进行,它必须在构建代码的管道中。因此,在移动签名代码位后,它起作用了。
0赞 Miao Tian-MSFT 11/16/2023
嗨,@suprasad,很高兴听到问题已解决。您可以发布您的答案并接受它。这可能会使将来遇到此问题的其他人受益。请参阅如何接受答案?。谢谢!

答:

0赞 suprasad 11/22/2023 #1

谢谢。问题现已修复。对于来自 Digicert 的最新证书,他们有这种需求,即签名不能在单个项目文件级别进行,它必须在构建代码的管道中。因此,在将签名代码位移出我们的 .csproj 文件后,它起作用了。

评论

0赞 Dylan Nicholson 11/28/2023
您能澄清一下“移动”签名代码的确切含义吗?你把它搬进了什么地方?
0赞 Dylan Nicholson 11/29/2023
顺便说一句,这些错误在 30 分钟左右后就消失了。据我们所知,这是DigiCert服务器的暂时问题。
0赞 suprasad 12/6/2023
@DylanNicholson它在那里已经存在了几天,在我在这里发布之前,多次尝试修复它。我从 .csproj 文件中删除了“sign”命令,并将该命令移至 .yml 文件(azure pipeline)
0赞 Dylan Nicholson 12/6/2023
我们尝试了一下,当时没有区别,我也看不出它是怎么做到的,除非有什么东西改变了相关的环境变量。