You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2019 Azure DevOps管道Signtool签名失败求助

代码签名失败(错误0x8009002d)排查方案

错误码0x8009002d对应NTE_BAD_ALGID,本质是签名算法与证书不兼容,或证书本身存在问题。结合你的场景,按以下步骤排查:

核心排查点

  • 检查证书算法支持
    打开服务器的certmgr.msc,找到代码签名证书:

    1. 右键→属性→详细信息,查看公钥算法和签名哈希算法
    2. 确认证书支持SHA256(你当前命令用了/fd sha256和/td sha256),如果证书只支持SHA1,要么更换证书,要么调整命令参数
  • 修正Signtool命令参数
    你当前用/sha1指定证书指纹,但签名算法是SHA256,可能存在冲突:

    • 如果证书指纹是SHA256格式,把/sha1改成/sha256
    • 确认指纹无多余空格或特殊字符,直接从证书属性中复制
  • 确认证书存储与权限

    1. 证书必须安装在本地计算机存储,而非当前用户存储
    2. 给构建服务账户授予证书私钥的读取权限
  • 测试时间戳服务器连通性
    在服务器上执行ping timestamp.digicert.com,确认网络连通正常。若不通,更换时间戳服务器,比如http://timestamp.sectigo.com

  • 验证管道参数正确性
    检查CodeSigningCertificateFingerprint参数是否准确;确认PX_CERT_SNK_PATH指向的文件存在(注意:SNK仅用于强命名,代码签名需要真实的代码签名证书)

手动验证命令

在服务器上直接执行简化版命令,排除管道配置干扰:

signtool sign /sha256 [你的证书指纹] /fd sha256 /td sha256 /tr http://timestamp.digicert.com /v "abcd.dll"

如果手动执行仍报错,重点排查证书本身和服务器环境;如果执行成功,再检查Azure DevOps管道的参数传递或权限问题

内容的提问来源于stack exchange,提问作者suprasad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:15:05