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

如何使用YubiKey证书签名VSIX归档文件?遇签名工具问题求指导

使用YubiKey签名VSIX文件的解决方案

一、正确设置--certificate-fingerprint参数

  • 你之前用Windows证书存储里的thumbprint是错误的,dotnet sign要求的是证书文件本身的SHA-256/SHA-384/SHA-512哈希值,而非证书的thumbprint(thumbprint是SHA-1哈希,不符合工具要求)。
  • 获取正确指纹的步骤:
    1. 从YubiKey或证书管理器导出公钥证书(.cer格式):
      • 用YubiKey管理器:找到9a插槽的代码签名证书,选择导出公钥,保存为.cer文件。
      • 用certmgr.msc:打开证书管理器,定位到YubiKey中的代码签名证书,右键→「所有任务」→「导出」,选择“不导出私钥”,按向导保存为.cer文件。
    2. 用PowerShell计算证书文件的SHA-256哈希:
      Get-FileHash -Path "C:\path\to\your\cert.cer" -Algorithm SHA256
      
    3. 将输出的Hash值去掉空格,直接作为--certificate-fingerprint的参数值。

二、确定--crypto-service-provider的正确值

  • 既然你已经能用sign.exe签名DLL,说明YubiKey的CSP(加密服务提供程序)已正常注册,通过以下方式获取对应名称:
    1. 证书管理器查看:
      打开certmgr.msc,找到目标证书→右键→「属性」→「详细信息」,找到「加密服务提供程序」字段,其值就是要传入的参数。
    2. PowerShell查询:
      # 替换为你的证书主题关键词,比如公司名称
      Get-ChildItem Cert:\CurrentUser\My | Where-Object { $_.Subject -match "YourCompanyName" } | Select-Object -ExpandProperty PrivateKey | Select-Object CspKeyContainerInfo
      
      查看输出中的ProviderName字段,YubiKey常用的是YubiKey Smart Card Key Storage Provider,如果找不到则用Microsoft Smart Card Key Storage Provider。
  • 若运行certutil -csplist,可筛选包含「Smart Card」或「YubiKey」的条目,优先选择YubiKey专属的提供程序。

三、关于OpenVsixSignTool的堆错误

  • STATUS_HEAP_CORRUPTION错误大多是旧工具与新证书/YubiKey固件不兼容导致的,官方已推荐使用dotnet sign作为VSIX签名的新工具,无需纠结旧工具,优先解决前两个参数问题即可正常签名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 16:40:55