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

Signtool提示“证书不适合代码签名”,同配置其他机器可正常运行

代码签名报错:“证书不适合代码签名”排查方案

问题描述

在VM中运行signtool.exe执行代码签名时突然报错,提示“证书不适合代码签名”,执行命令如下:

"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool.exe" sign  /fd sha256 /t http://timestamp.digicert.com /f "D:\MY_AWESOME_CERT.pfx" /p MY_AWESOME_PW D:\MY_AWESOME_FILE.exe

返回错误信息:

Done Adding Additional Store
SignTool Error: The signer's certificate is not valid for signing.
SignTool Error: An error occurred while attempting to sign: D:\MY_AWESOME_FILE.exe

另一台操作系统版本、signtool.exe版本完全相同的Windows机器,使用同一签名密钥执行相同命令可正常完成签名,且证书并非自签名证书。

排查解决步骤

  • 检查证书的增强密钥用法(EKU)
    双击打开PFX证书,切换到「详细信息」标签,找到「增强密钥用法」项,确认是否包含「代码签名(1.3.6.1.5.5.7.3.3)」。若没有,需联系证书颁发机构重新申请具备代码签名权限的证书;若有,继续下一步排查。

  • 验证证书链完整性
    在VM中将证书导入「本地计算机-受信任的根证书颁发机构」和「个人」存储区,通过certmgr.msc查看证书链是否完整,是否缺失中间CA证书。正常机器能签名大概率是证书链完整,VM可能因缺少中间证书导致无法验证证书有效性。

  • 检查证书状态
    查看证书「有效期」确认是否在有效期内;在证书属性「详细信息」中找到「CRL分发点」,手动检查证书是否被吊销。也可执行命令certutil -verify D:\MY_AWESOME_CERT.pfx验证证书状态,根据输出定位问题。

  • 确保signtool以管理员权限运行
    启动命令提示符时选择「以管理员身份运行」,VM的权限限制可能比物理机严格,低权限下可能无法完成证书验证或存储操作。

  • 修复或重新导入PFX证书
    从正常机器复制PFX文件到VM(避免传输损坏),重新导入到VM的证书存储区,改用从存储区读取证书的命令尝试签名,示例:

    "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool.exe" sign /fd sha256 /t http://timestamp.digicert.com /s MY /n "证书主体名称" D:\MY_AWESOME_FILE.exe
    
  • 校准VM系统时间
    若VM系统时间与实际时间偏差过大,会导致证书有效期验证失败,调整系统时间至当前正确时间后重试。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:33:11