1 系统正常情况下的操作步骤
下面所有需要输入密码的,请输入同一个密码,所以你要记住自己创建的密码。
1.1 SignTool.rar 下载工具包或者
方法一、如果您安装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的安装盘中找到。
1.2 、makecert.exe 创建证书
为了便于操作,建议你将这个工具包放在磁盘根目录下,目录名称起得简单些,进入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 | 签名人信息-名称 |
E=Sagecreation@163.com.cn | 签名人信息-电子邮件 |
O=北京赛智创业有限公司 | 签名人信息-组织信息 |
sagecert.cer | 自定义.cer证书文件 |
这些根据你自己的要求填写,最后得到SageKey.PVK和sagecert.cer两个文件。
其中各参数的含义,使用
makecert -?
makecert -!
可以获得详尽的帮助,在这里就不说了
在弹出的窗口输入密码保护你的证书,这个密码要在后面反复使用多次,所以要记住了
输入私人密钥的保护密码
1.2.1 创建私钥密码
1.2.2 输入私人密钥
输入完成后界面上会提示Succeeded,在当前的目录下也生成了*.cer和*.pvk两个文件。
1.3 、cert2spc.exe 格式转换(可以省略)
将cer格式转换为spc格式。
cert2spcsagecert.cer sagecert.spc
得到*.spc文件。
1.4 、signcode.exe 签名
给ocx、sys、exe、dll、cab等进行签名,下面我们对例子程序进行签名。
1.4.1 欢迎使用数字签名向导
双击工具包里的“signcode.exe”,signcode运行后会出现“数字签名向导”。
1.4.2 文件选择
首先选择你要签名的文件,例如下图所示的Exe文件,然后点击“下一步(N) >”。
1.4.3 签名选项
一种是“典型(T)”,一种是“自定义(C)”。我们选择“自定义(C)”,然后点击“下一步(N) >”。
1.4.4 签名证书
点击“从文件选择(F)...”,弹出“打开”文件对话框。
选择cer文件或者spc文件。点击“打开(O)”,然后点击“下一步(N)>”。
1.4.5 私钥
点击“浏览(R)...”,弹出“打开”对话框。
选择私钥文件*.PVK,点击“打开(O)”。
选择“CSP”,选择完成后,点击“下一步(N) >”。
输入私钥的“密码(P)”,输入完成后点击“确定”。
1.4.6 散列算法(哈希算法)
选择“散列算法”(“哈希算法(H)”),一般用“md5”就可以了,点击“下一步(N) >”。
1.4.7 其它证书
保持默认,点击“下一步(N) >”。
1.4.8 数据描述(可选)
填写“描述(可选)(D)”和“Web位置(可选)(W)”,点击“下一步(N) >”。
1.4.9 给数据盖时间戳(可选)
“将时间戳添加到数据中(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
1.4.10 正在完成数字签名向导
查看“已指定下列设置”的内容,确认后点击“完成”。
输入私钥密码,点击“确定”,弹出“数字签名向导已经成功完成。”的提示,表示已经签名完成。
1.5 、chktrust.exe 检查
检测数字签名是否正确,在DOS窗口输入下列命令中的一种:
chktrust.exeC:\SignTool\ChemiCapture(Release).exe
chktrust –v C:\SignTool\ChemiCapture(Release).exe
如果下图所示,DOS窗口显示“C:\SignTool\ChemiCapture(Release).exe:Succeeded”表示签名成功。
2 遇到问题及解决方案
2.1 数字签名向导-签名证书和私钥不匹配,或者不数据包含有效信息。
解决方案:选择合适CSP
2.2 数字签名向导-您必须指定加密服务提供程序
2.2.1 解决方案
2.2.1.1 第一步:检测下列windows相关服务属性是否为(启动类型 = 自动;服务状态 = 已启动)
Protected Storage服务
Cryptographic Service服务
Encrypting File System (EFS)服务
2.2.1.2 第二步:在注册表中搜索下列相关内容,如果没请重装系统或者使用其他计算机进行签名
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 |
2.3 数字签名向导-Windows无法构建申请的证书路径。
解决方案:在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