VS2019无法识别ECC SHA384代码签名证书,VSTO项目如何完成签名?
是否为Visual Studio已知限制
该问题属于Visual Studio 2019 16.x版本的已知限制:其内置项目签名模块的证书筛选逻辑仅默认适配RSA算法的代码签名证书,未做ECC(椭圆曲线)算法证书的兼容支持,尤其是基于SHA384哈希的ECC代码签名证书无法被识别,因此会弹出「无符合要求的证书」的提示。
手动生成后签名实现方案
你可以通过配置后期生成事件调用官方signtool.exe工具完成同等签名效果,操作步骤如下:
- 前置准备:确认DigiCert ECC代码签名证书已正确导入当前用户的个人证书存储区,或已持有证书PFX文件及对应访问密码;安装Windows 10/11 SDK获取高版本
signtool.exe(旧版本SignTool不支持ECC算法签名)。 - 配置后期生成事件:
- 右键VSTO项目,依次选择「属性」-「生成事件」
- 在「后期生成事件命令行」输入框中填入对应签名命令:
- 调用证书存储区证书签名:
"你的SignTool完整路径" sign /n "你的证书主题名称" /fd SHA384 /t http://timestamp.digicert.com $(TargetPath) "你的SignTool完整路径" sign /n "你的证书主题名称" /fd SHA384 /t http://timestamp.digicert.com $(TargetDir)$(TargetName).vsto "你的SignTool完整路径" sign /n "你的证书主题名称" /fd SHA384 /t http://timestamp.digicert.com $(ProjectDir)Properties\app.manifest- 调用本地PFX文件签名:
"你的SignTool完整路径" sign /f "你的PFX文件完整路径" /p "你的PFX访问密码" /fd SHA384 /t http://timestamp.digicert.com $(TargetPath) "你的SignTool完整路径" sign /f "你的PFX文件完整路径" /p "你的PFX访问密码" /fd SHA384 /t http://timestamp.digicert.com $(TargetDir)$(TargetName).vsto "你的SignTool完整路径" sign /f "你的PFX文件完整路径" /p "你的PFX访问密码" /fd SHA384 /t http://timestamp.digicert.com $(ProjectDir)Properties\app.manifest
- 签名验证:项目生成完成后,右键签名后的文件,选择「属性」-「数字签名」即可查看签名信息,确认证书、哈希算法、时间戳均正确即可。
- 补充说明:如果
signtool.exe路径已加入系统环境变量,可省略工具的完整路径,直接写signtool即可。
内容的提问来源于stack exchange,提问作者EylM
相关产品推荐
相关产品推荐

