数字签名SIGN & MARK
摘要:数字签名SIGN保证控件在下载时候的安全性。如果你的代码已经经过数字签名,即使用户IE的安全设置很高也能下载,安装并登记。但是在页面上初始化,或者用脚本运行这个控件,为了保证安全性,还需要进行MARK。
数字签名SIGN
曹晓峰
摘要:数字签名保证控件的安全性。数字签名使用证书。证书一般有个人证书和授信公司证书。个人证书是对个人的信任,由个人承担责任,控件每次下载时需要进行确认。公司证书是由第三方公司发布的,保证控件的安全性,公司证书需要付费。Windows授信的证书公司有VeriSign,SecureSign等等。由这些公司证书签名的控件在下载的时候不需要确认。
一.工具
工具包括以下几个软件:
makecert.exe 制作cer格式的证书,即X.509证书,同时可以创建私钥(防止抵赖)
cert2spc.exe 将cer格式证书转换成spc格式证书,即PKCS #7证书
signcode.exe 将证书签署到ocx上去
chktrust.exe 检查签署证书后的ocx是否正确
certmgr.exe,是管理证书用的,可以从这里面导出root.cer来,不过没有私钥用不上。
二.步骤
下面是具体的步骤:
1、创建一个自己的证书文件:
makecert /sv "Record.PVK" /n "CN=SinoWave" dream.cer
这里,Record.PVK表示新创建的私人密钥保存文件名
SinoWave是你想显示的公司名
dream.cer是你创建最后的证书文件名
这些根据你自己的要求填写,最后得到Record.PVK和dream.cer两个文件。其中,运行过程中需要输入私人密钥的保护密码(sw),一定要输入一致,不要出错。
2、转换cer格式为spc格式(可以省略),得到dream.spc文件。
cert2spc dream.cer dream.spc
3、用VS6工具中的 cabarc生成internet分发的CAB包,
cabarc.exe N DataTransfer.cab DataTransfer.ocx
4、同时制作分发代码(.htm,其中包含使IE可以自动下载安装包的代码)。
现在得到了2个文件DataTransfer.CAB和DataTransfer.htm。
.htm中包含类似如下的代码:
<OBJECT ID=" DataTransfer " CLASSID="CLSID: CA466D54-0684-49D2-B0C3-DD7E09EA76D3" CODEBASE="http://192.9.200.8/DataTransfer.CAB#version=1,0,0,0"></OBJECT>
注意:一定要写上"http:// 192.9.200.8/",真正发行时最好使用url。
5、给CAB文件签名
运行signcode,命令行的我没有试验通过,我是通过界面实现的。signcode运行后会出现数字签名向导,首先选择DataTransfer.CAB,下一步后会出现签名选项,一种是典型,一种是自定义。选择自定义,这样才能从文件选择证书,选择前面制作的dream.spc,再下一步是选择私钥文件,选择Record.PVK,输入私人密钥的保护密码,选择散列算法,一般用md5就可以了,下一步是选择其他证书,直接下一步,填写一下这个控件的声明,用户用ie浏览的时候,会弹出证书说明,再下一步是加盖时间戳,例如http://timestamp.sheca.com/timestamp
6、用chktrust检查是否正确
chktrust -v DataTransfer.CAB
7、将签名后的DataTransfer.CAB和DataTransfer.htm复制到IIS的某个目录下。并在IE中打开DataTransfer.htm文件进行测试。