使用硬件令牌为ClickOnce项目进行代码签名的实现流程
使用硬件令牌签名ClickOnce WPF应用(VS2022)
前提准备
- 安装硬件令牌厂商提供的**加密服务提供商(CSP)或密钥存储提供程序(KSP)**驱动,确保系统能识别令牌设备。
- 打开
certmgr.msc,检查「个人」证书存储,确认硬件令牌上的代码签名证书已加载(证书图标带小钥匙标记,且私钥属性显示「不可导出」)。
VS图形界面签名流程
- 右键WPF项目 → 选择「属性」→ 切换到「发布」选项卡 → 点击「签名」按钮。
- 在「签名清单」区域,勾选「为ClickOnce清单签名」,点击「选择证书」。
- 在弹出的证书选择窗口中,找到硬件令牌对应的代码签名证书(通常带有令牌厂商标识),选中后点击「确定」。
- 执行发布流程,当VS调用令牌私钥时,按照硬件令牌的提示完成身份验证(如输入PIN码),即可完成签名。
命令行备选方案(若VS图形界面识别失败)
如果VS无法正常调用令牌证书,可使用mage.exe手动签名:
- 先在VS发布设置中临时取消签名,生成未签名的ClickOnce文件包。
- 找到VS自带的
mage.exe工具(路径示例:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\mage.exe)。 - 获取证书哈希值:打开
certmgr.msc,找到令牌证书,查看「详细信息」→「指纹」,去掉指纹中的空格得到哈希值。 - 执行签名命令:
mage.exe -sign "YourApp.application" -CertHash "证书哈希值" -Provider "令牌对应的CSP/KSP名称"- 令牌对应的CSP/KSP名称可从厂商文档获取,或通过
certutil -csp命令查看系统已安装的提供程序列表。
- 令牌对应的CSP/KSP名称可从厂商文档获取,或通过
内容的提问来源于stack exchange,提问作者Intensivist
相关产品推荐
相关产品推荐

