创建为ClickOnce清单签名的.pfx格式数字证书

之前的一个项目,以前启用了ClickOne自动发布,之后他们让取消自动发布,现在又想启用,结果自动发布生成的时候出问题了,错误信息:

签名时出错: 未能给 ..\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: ..\Debug\app.publish\\setup.exe.....

终于发现是签名问题,之前是没有提示签名错误的,反正提示信息及其不可靠,今天可是重新建立了一个解决方案的,目录结构和代码还未搬过来,估计要耗费2天时间。于是解决签名问题。

发现项目属性里的签名栏目中的“为ClickOne清单签名”处在勾选状态,其中的证书到期日已经过期了,于是从网络上找到下面的文章,生成了一个有效期很长的证书,然后通过文件导入,解决问题。附带生成有效期很长证书的方法。

 

    使用vs2005自动创建的.pfx数字证书默认有效期只有一年,并且“颁发者”、“颁发给”均为当前机器名和当前登陆用户名的组合,其实我们完全可以创建更友好的.pfx数字证书。

打开Microsoft .NET Framework 的SDK命令提示,按以下步骤操作:

1、创建一个自我签署的X.509证书(.cer)和一个.pvk私钥文件,用到makecert工具,命令如下:

makecert -r -n "CN= myselfName " -b 01/01/2005 -e 01/01/2018 -sv myselfName.pvk myselfName.cer

按提示设置私钥密码(也可以不使用密码)即可在当前目录生成相关文件

2、利用X.509证书(.cer)创建发行者证书 (.spc),用到cert2spc工具,命令如下:

cert2spc myselfName.cer myselfName.spc

3、从.pvk和.spc格式转换成.pfx格式,用到pvkimprt工具,命令如下:

pvkimprt -pfx myselfName.spc myselfName.pvk

按提示操作可导出.pfx证书,若第1步设置了私钥密码,此处需要输入验证

4、在vs项目的ClickOnce清单签名的证书设置处点击“从文件选择”浏览定位到第3步导出的.pfx证书,此处需要验证第3步中设置的证书私钥密码。

=================================================
makecert工具和cert2spc工具.NET Framework自带,pvkimprt工具下载地址如下
http://download.microsoft.com/download/vba50/Utility/1.0/NT5/EN-US/pvkimprt.exe

你可能感兴趣的:(数字证书,休闲,ClickOnce,.pfx,清单签名)