今天在发布ClickOnce提示:错误 8 签名时出错: 未能给 bin/Debug/app.publish//setup.exe 签名。SignTool Error: ISignedCode::Sign returned error: 0x80880253,The signer's certificate is not valid for signing.SignTool Error: An error occurred while attempting to sign: bin/Debug/app.publish//setup.exe MainFrame,之前没有遇到过;
上网一查原来是数字签名证书的日期已过期,需要重新生成一个签名证书;
打开Microsoft .NET Framework 的SDK命令提示,按以下步骤操作:
1、创建一个自我签署的X.509证书(.cer)和一个.pvk私钥文件,用到makecert工具(.net自带的工具),命令如下:
makecert -r -n "CN= myselfName " -b 01/01/2005 -e 01/01/2018 -sv myselfName.pvk myselfName.cer
备注:弹出私钥密码对话框,按提示设置私钥密码(也可以不使用密码),后面将会用到这个密码;
2、利用X.509证书(.cer)创建发行者证书 (.spc),用到cert2spc工具(.net自带的工具),命令如下:
cert2spc myselfName.cer myselfName.spc
3、从.pvk和.spc格式转换成.pfx格式,用到pvkimprt工具,命令如下:
pvkimprt -pfx myselfName.spc myselfName.pvk
然后按提示操作导出.pfx证书,若第1步设置了私钥密码,此处需要输入验证;
备注:需要安装过pvkimprt工具后,才使用上面的命令,否则在SDK中执行上面的命令将无法成功;
4、在vs项目的ClickOnce清单签名的证书设置处点击“从文件选择”浏览定位到第3步导出的.pfx证书,此处需要验证第3步中设置的证书私钥密码。
pvkimprt工具下载地址如下
http://download.microsoft.com/download/vba50/Utility/1.0/NT5/EN-US/pvkimprt.exe
这个pvkimprt.exe 是需要解压的,默认解到压C:/DOCUME~1/tzj/LOCALS~1/Temp文件夹,解压过后找到pvkimprt.exe文件双击安装;