SSL开放论坛 » 软件代码签名 http://www.openssl.com.cn/forum-22-1.html
http://www.cnblogs.com/babyt/
给控件做数字签名之一:将控件打包为Web发布包
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVEk0TDI5ZlltRmllWFJmWTI5d2VYSnBaMmgwTVM1bmFXWT0=)
我做了一个WebRtf的控件,主要是封装了RichtextBox控件,增加一些方法,如打印等,用来实现在Web上显示RTF文档的功能。
编译成WebRtf.ocx,在VB中测试成功,为了能在Web上使用,我们需要做两个工作
一是将其打包成Internet发布包
二是将这个包进行数字签名
我一步一步抓图进行讲解,如果对于第一个部分你已经熟悉,可以直接略过进入第二部分
图上已经相当清楚,我只在必要的地方加一点描述。
第一部分:将控件打包成发布包
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1TNXFjR2M9)
找到你原来工程的位置
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1pNXFjR2M9)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk15NXFjR2M9)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk5DNXFjR2M9)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk5TNXFjR2M9)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk5pNXFjR2M9)
为了包文件的完整性,建议将所有的文件设置为“Include in this cab”,就是这个包里包含所有的依存文件
防止文件丢失导致控件不能正常运行
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk55NXFjR2M9)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk9DNXFjR2M9)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk9TNXFjR2M9)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1UQXVhbkJu)
OK,第一部分完成了,上面红色标注出来的就是打包好的文件的位置,
注意这个打包文件旁边还有个htm文件,这个可以用来参考作具体的WEB应用的
<OBJECT ID="myDoc"
CLASSID="CLSID:753C5D11-7E87-4C54-B4E7-548F1251D7BA"
CODEBASE="WebRTF.CAB#version=1,0,0,7">
</OBJECT>
下面开始进入第二部分,数字签名与发布
给控件做数字签名之二:生成证书文件
准备好工具包,微软的IE SDK里包含这些工具,
但是那个开发包太过庞大,而且操作起来也稍微得繁琐了一些你只需要下载这么几个文件就可以了
文中提到的数字签名工具包,请在此处下载
https://files.cnblogs.com/babyt/SignTool.rar
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1URXVhbkJu)
首先我们要制作一个证书
进入DOS模式下该目录
为了便于操作,建议你将这个工具包放在磁盘根目录下,目录名称起得简单些
输入以下命令,生成一个名为babyt.cer的证书
makecert /sv "BabytOk.PVK" /n "CN=Facesun.cn,E=Babyt-163-com,O=阿泰" babyt.cer
其中各参数的含义,使用
makecert -?
makecert -!
可以获得详尽的帮助,在这里就不说了
在弹出的窗口输入密码保护你的证书,这个密码要在后面反复使用多次,所以要记住了
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1USXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1UTXVhbkJu)
输入完成后界面上会提示Succeeded,在当前的目录下也生成了babyt.cer和babytOK.pvk两个文件
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1UUXVhbkJu)
下面我们开始对前面打包好的控件进行签名。
给控件做数字签名之三:进行数字签名
双击工具包里的signcode.exe
文中提到的数字签名工具包,请在此处下载
https://files.cnblogs.com/babyt/SignTool.rar
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1UVXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1UWXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1UY3VhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1UZ3VhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1Ua3VhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1qQXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1qRXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1qSXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1qTXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1qUXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1qVXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1qWXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1qY3VhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1qZ3VhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk1qa3VhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk16QXVhbkJu)
至此,数字签名完成
在DOS窗口下,输入
chktrust.exe E:/myTest/08/Package/WebRTF.CAB
对我们的成果进行检验
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk16RXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk16SXVhbkJu)
此时成功,对了,这个“恭喜”的红字是我做上去的,可别到时候这俩字出不来还觉得奇怪![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZSVzF2ZEdsamIyNXpMMUZSTHpFMExtZHBaZz09)
最后就是发布了
将这两个文件拷贝到WEB目录下进行测试,出现证书安装提示后按是安装即可![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk16TXVhbkJu)
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk16UXVhbkJu)
下面就是我的控件在WEB上正常显示的结果.
![给控件做数字签名之一:将控件打包为Web发布包 [转] 给控件做数字签名之一:将控件打包为Web发布包 [转]](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTkzZDNjdVkyNWliRzluY3k1amIyMHZhVzFoWjJWekwyTnVZbXh2WjNOZlkyOXRMMkpoWW5sMEx6SXdOVE13TDI5Zk16VXVhbkJu)
怎么样了,会了吗?
-------Over------------------
希望对你有所帮助,也别枉费了我的辛苦
阿泰 20050314
补充:
MakeCert.exe生成的是测试证书,仅做测试用,使用时必须开启浏览器"对没有标记为安全的ActiveX控件进
行初始化和脚本运行"和"下载未签名的ActiveX控件",否则浏览器将阻止ActiveX的下载,并显示"windows
已经阻止此软件因为无法验证发行者",点击开发商信息你会看到提示"由于当前的策略设置,该测试根不受信任;证书路径因此而终止"。
需要CA证书的朋友可到http://www.ca365.com/申请,是免费的、使用期限为一年,申请后立刻得到证书。需要注意的是申请时要选择正确的电子证书用途,这边我们应选择"代码签名证书"!还要注意安装好证书后17步中应选择典型,就不会像22步中提示你要私钥文件,否则无法完成数字签名!!