下面所有需要输入密码的,请输入同一个密码,所以你要记住自己创建的密码。
方法一、如果您安装Microsoft Visual Studio 2005,那么请在安装目录的(..\Common7\Tools\Bin\)下找到相关的工具(makecert.exe、cert2spc.exe、signcode.exe);
方法二、如果没有安装Microsoft Visual Studio 2005且没有数字签名工具包,请从此处下载。
http://download.csdn.net/detail/chenlu5201314/9700199
下载并解压工具包,工具包包括以下几个软件:
makecert.exe 制作cer格式的证书,即X.509证书,同时可以创建私钥cert2spc.exe 将cer格式证书转换成spc格式证书,即PKCS#7证书signcode.exe 将证书签署到ocx上去chktrust.exe 检查签署证书后的ocx是否正确;还有一个certmgr.exe,是管理证书用的。可以从这里面导出root.cer来,网上很多文章写到这个证书,但是在VC的安装盘中却找不到。其实,没有也没关系的。这几个软件可以从VC的安装盘中找到。
为了便于操作,建议你将这个工具包放在磁盘根目录下,目录名称起得简单些,进入DOS模式下跳到该目录,输入以下命令,生成一个名为sagecert.cer的证书,如果需要重新创建证书,请将目标文件夹的*.PVK、*.cer、*.spc等文件删除
makecert /sv"SageKey.PVK" /n"CN=Sagecreation.com.cn,E=Sagecreation-163-com-cn,O=北京赛智创业有限公司" sagecert.cer
/sv |
指定主题的.pvk 私钥文件。如果该文件不存在,系统将创建一个。 |
"SageKey.PVK" |
自定义.pvk 私钥文件 |
/n |
指定签名人信息信息。此名称必须符合 X.500 标准。最简单的方 法是在双引号中指定此名称,并加上前缀 CN=;例如, -n "CN=myName"。
|
CN=Sagecreation.com.cn |
签名人信息-名称 |
签名人信息-电子邮件 |
|
O=北京赛智创业有限公司 |
签名人信息-组织信息 |
sagecert.cer |
自定义.cer证书文件 |
这些根据你自己的要求填写,最后得到SageKey.PVK和sagecert.cer两个文件。
其中各参数的含义,使用
makecert -?
makecert -!
可以获得详尽的帮助,在这里就不说了
在弹出的窗口输入密码保护你的证书,这个密码要在后面反复使用多次,所以要记住了
输入私人密钥的保护密码
输入完成后界面上会提示Succeeded,在当前的目录下也生成了*.cer和*.pvk两个文件。
将cer格式转换为spc格式。
cert2spcsagecert.cer sagecert.spc
得到*.spc文件。
给ocx、sys、exe、dll、cab等进行签名,下面我们对例子程序进行签名。
双击工具包里的“signcode.exe”,signcode运行后会出现“数字签名向导”。
首先选择你要签名的文件,例如下图所示的Exe文件,然后点击“下一步(N) >”。
一种是“典型(T)”,一种是“自定义(C)”。我们选择“自定义(C)”,然后点击“下一步(N) >”。
点击“从文件选择(F)...”,弹出“打开”文件对话框。
选择cer文件或者spc文件。点击“打开(O)”,然后点击“下一步(N)>”。
点击“浏览(R)...”,弹出“打开”对话框。
选择私钥文件*.PVK,点击“打开(O)”。
选择“CSP”,选择完成后,点击“下一步(N) >”。
输入私钥的“密码(P)”,输入完成后点击“确定”。
选择“散列算法”(“哈希算法(H)”),一般用“md5”就可以了,点击“下一步(N) >”。
保持默认,点击“下一步(N) >”。
填写“描述(可选)(D)”和“Web位置(可选)(W)”,点击“下一步(N) >”。
“将时间戳添加到数据中(D)”可以勾选也可以不勾选。
如果没有勾选了“将时间戳添加到数据中(D)”,点击“下一步(N) >”;如果勾选了“将时间戳添加到数据中(D)”,请填写“时间戳服务(T)”,可以是下列URL中的一个,然后点击“下一步(N) >”。
http://timestamp.wosign.com/timestamp
http://timestamp.verisign.com/scripts/timstamp.dll
http://timestamp.globalsign.com/scripts/timstamp.dll
http://timestamp.comodoca.com/authenticode
查看“已指定下列设置”的内容,确认后点击“完成”。
输入私钥密码,点击“确定”,弹出“数字签名向导已经成功完成。”的提示,表示已经签名完成。
检测数字签名是否正确,在DOS窗口输入下列命令中的一种:
chktrust.exeC:\SignTool\ChemiCapture(Release).exe
chktrust –v C:\SignTool\ChemiCapture(Release).exe
如果下图所示,DOS窗口显示“C:\SignTool\ChemiCapture(Release).exe:Succeeded”表示签名成功。
解决方案:选择合适CSP
Protected Storage服务
Cryptographic Service服务
Encrypting File System (EFS)服务
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Defaults\Provider
Provider
CSP(C) |
Image Path |
Types |
Microsoft Base Cryptographic Provider v1.0 |
rsaenh.dll |
1 |
Microsoft Base DSS and Diffie-Hellman Cryptographic Provider |
dssenh.dll |
13 |
Microsoft Base DSS Cryptographic Provider |
dssenh.dll |
3 |
Microsoft Base Smart Card Crypto Provider |
basecsp.dll |
1 |
Microsoft DH SChannel Cryptographic Provider |
dssenh.dll |
18 |
Microsoft Enhanced Cryptographic Provider v1.0 |
rsaenh.dll |
1 |
Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider |
dssenh.dll |
13 |
Microsoft Enhanced RSA and AES Cryptographic Provider |
rsaenh.dll |
24 |
Microsoft RSA SChannel Cryptographic Provider |
rsaenh.dll |
14 |
Microsoft Strong Cryptographic Provider |
rsaenh.dll |
1 |
Provider Type
Types |
Name |
TypeName提供程序类型(V) |
1 |
Microsoft Strong Cryptographic Provider |
RSA Full (Signature and Key Exchange) |
3 |
Microsoft Base DSS Cryptographic Provider |
DSS Signature |
12 |
Microsoft RSA SChannel Cryptographic Provider |
RSA SChannel |
13 |
Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider |
DSS Signature with Diffie-Hellman Key Exchange |
18 |
Microsoft DH SChannel Cryptographic Provider |
Diffie-Hellman SChannel |
24 |
Microsoft Enhanced RSA and AES Cryptographic Provider |
RSA Full and AES |
解决方案:在makecert 的DOS命令中加入“-$ "individual" -r”,重新生成私钥(PVK)和证书(CER)文件。签名时选用“md5”算法。
例如:
Xp下
makecert /sv"SageKey.PVK" /n"CN=Sagecreation.com.cn,E=Sagecreation-163-com-cn,O=北京赛智创业有限公司" sagecert.cer
Win7下
makecert /sv"SageKey.PVK" /n"CN=Sagecreation.com.cn,E=Sagecreation-163-com-cn,O=北京赛智创业有限公司" sagecert.cer -$ "individual" -r