由于使用Winfx创建的Web应用程序发布后需要证书,但是使用vs2005自动创建的.pfx数字证书默认有效期只有一年,这样很容易就过期了,到下一年的时候需要重新更换证书发布程序,这样太麻烦了,并且“颁发者”、“颁发给”均为当前机器名和当前登陆用户名的组合,其实我们可以通过.netSDK自带的工具完全可以创建更友好的.pfx数字证书。
打开Microsoft .NET Framework 的SDK命令提示,这些工具在目录C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin下可以找到,按以下步骤操作:
1、创建一个自我签署的X.509证书(.cer)和一个.pvk私钥文件,用到makecert工具,命令如下:
makecert -r -n "CN=webwinfxxuyz" -ss my -b 01/01/2007 -e 01/01/2099 -sv keyName.pvk keyName.cer
其中
-sv keyName.pvk keyName.cer 意思是生成一个私匙和证书文件 keyName.pvk keyName.cer;
-n "CN=webwinfxxuyz" 其中的“webwinfxxuyz”就是签名中显示的证书所有人的名字,改为你想要的名字;
-ss my 指定生成后的证书保存在个人证书中(可以不加);
-r 意思是说证书是自己颁发给自己的;
-b 01/01/2007 指定证书的有效期起始日期,格式为 月/日/年,最低为1900年;
-e 01/01/2099 指定证书的有效期终止日期,格式同上,我想2099年应该够长了吧,不够自己改吧;
按提示设置私钥密码(也可以不使用密码)即可在当前目录生成相关文件
2、利用X.509证书(.cer)创建发行者证书 (.spc),用到cert2spc工具,命令如下:
cert2spc keyName.cer keyName.spc
3、从.pvk和.spc格式转换成.pfx格式,用到pvkimprt工具,pvkimprt工具下载地址如下
http://download.microsoft.com/download/vba50/Utility/1.0/NT5/EN-US/pvkimprt.exe;命令如下:
pvkimprt -pfx keyName.spc keyName.pvk
按提示操作可导出.pfx证书,若第1步设置了私钥密码,此处需要输入验证
4、在vs2005 winfxd项目的Signing证书签名设置处点击“从文件选择”浏览定位到第3步导出的.pfx证书,此处需要验证第3步中设置的证书私钥密码。