分享
 
 
 

VB与ActiveX控件签名谈

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

VB与ActiveX控件签名谈

VB与ActiveX控件签名谈 在VS安装后发现路径**VC7\Common7\Tools\Bin\下有许多小工具,我对带有Cert的文件比较感兴趣。经过研究,发现是有关证书和签名的,当然,该证书未被证书认证机构认可。下面列出这些工具和我的使用心得。

1。Makecert.exe ---证书创建工具

2。Cert2Spc.exe ---发行者证书测试工具

3。Signcode.exe ---文件签名工具

面对其众多参数,我只好一一尝试。经过不断的创建,我已经能够做好证书的自我创建,子证书的创建,文件签名。嘿嘿,这下ActiveX控件的自动下载问题也算解决了一大半,有事没事就给自己编的小软件签个名又何妨?

建立自己的根证书:

makecert -sk myPK -ss myName -n 'CN=LUO31工作室' -r c:\luo31.cer

sk-表示主题的密钥容器位置,ss-主题的证书存储名称, n-证书颁发对象,r-证书存储位置;

如果你需要导出私钥文件,请不要使用sk,而换作s,eg:makecert -ss myName -n 'CN=LUO31工作室' -sv c:\luo31.pvk -r c:\luo31.cer

建立自根跟证书授权的子证书:

makecert -sk 'myPK' -is myName -n 'CN=luo31' -$ commercial -ic c:\luo31.cer c:\31.cer

sk-表示主题的密钥容器位置,is-颁发者的证书存储名称, n-证书颁发对象,ic-颁发者的证书存储位置,-$-授权范围(用于代码签名);

使用Cert2Spc生成spc发行者证书(可选):

cert2spc c:\31.cer c:\31.spc

使用signcode为你的程序,库或cab包签名:

双击signcode,或在控制台键入signcode,不带参数会启动签名向导。在第三步选择“自定义选项”,第四步选择“从文件选择”选择31.spc或31.cer,第五步选择“CSP中的私钥”,在密钥容器中选择我们定义的myPK,其他步骤默认即可,如果想添加时间戳,请在时间戳服务器地址上键入:(免费时间戳认证)http: //timestamp.verisign.com/scripts/timstamp.dll

完成后,观察你所签名的文件属性,应该已经添加数字签名项。

1. 下载数字签名工具

在m$的网站上下载:codesigningx86.exe 文件。解压缩

2. 使用VB的打包向导将主要使用的dll,ocx 文件等打包为 .cab 文件。

3. 使用说明

首先去MS的网站上下载CODESIGN.EXEP这个文件,这是个自解压文件,然后按以下示例做。

这四个工具在C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin也有

工具包包括以下几个软件:

makecert.exe 制作cer格式的证书,即X.509证书,同时可以创建私钥

cert2spc.exe 将cer格式证书转换成spc格式证书,即PKCS #7证书

signcode.exe 将证书签署到ocx上去

chktrust.exe 检查签署证书后的ocx是否正确

还有一个certmgr.exe,是管理证书用的。可以从这里面导出root.cer来,

网上很多文章写到这个证书,但是在VC的安装盘中却找不到。其实,没

有也没关系的。这几个软件可以从VC的安装盘中找到。

下面是具体的步骤:

1、创建一个自己的证书文件:

makecert /sv 'Record.PVK' /n 'CN=北京美髯公科技发展有限公司' dream.cer

这里,Record.PVK表示新创建的私人密钥保存文件名

DreamCaptial是你想显示的公司名

dream.cer是你创建最后的证书文件名

这些根据你自己的要求填写,最后得到Record.PVK和dream.cer两个文件。

其中,运行过程中需要输入私人密钥的保护密码,一定要输入一致,不要出错。

2、转换cer格式为spc格式(可以省略)

cert2spc dream.cer dream.spc

得到dream.spc文件。

3、给ocx进行签名

运行signcode,命令行的我没有试验通过,我是通过界面实现的。

signcode运行后会出现数字签名向导,首先选择你要签名的ocx,

下一步后会出现签名选项,一种是典型,一种是自定义。选择自定义,

这样才能从文件选择证书,选择前面制作的dream.spc,再下一步是

选择私钥文件,选择Record.PVK,输入私人密钥的保护密码,选择散

列算法,一般用md5就可以了,下一步是选择其他证书,直接下一步,

填写一下这个控件的声明,用户用ie浏览的时候,会弹出证书说明,

再下一步是加盖时间戳,我不会,直接下一步就完成了。

4、用chktrust检查是否正确

chktrust -v RecordProj.ocx

用下列批命令做证书

makecert -sv 'denghan.pvk' -n 'CN=KinSoft' test.cer

cert2spc test.cer test.spc

---------------------------------------------

用下列命令给CAB文件签名

signcode -spc test.spc -v denghan.pvk -n '这个是CAB数字签名' -t

'添加时间戳

http://timestamp.verisign.com/scripts/timstamp.dll rx80.cab

rx80.CAB文件用rx80.inf的内容

[version]

signature='$CHICAGO$'

AdvancedINF=2.0

[Add.Code]

test.dll=test.dll

rx80.inf=rx80.inf

[test.dll]

file=rx80.cab

RegisterServer=yes

clsid={7E0CDEE7-DC80-4F37-9410-790BB5E9270E}

DestDir=10

FileVersion=1,0,0,1

[rx80.inf]

file=rx80.cab

把这个CAB文件放到你的服务器上,用下列代码说明你的codebase,就会自动下载了。

<object classid='clsid:7E0CDEE7-DC80-4F37-9410-790BB5E9270E'

codebase='http://yourHostURL/rx80.cab#version=1,0,0,1' width='800' height='191'>

...

4. 参考资料

http://msdn.microsoft.com/library/default.asp?url=/library/en-

us/dnaxctrl/html/msdn_deplactx.asp

http://www.verisign.com

预览该网页,会弹出提示框

http://support.microsoft.com/?kbid=182598

http://www.china-askpro.com/msg40/qa13.shtml

View products that this article applies to.

This article was previously published under Q182598IObjectSafety interface in Visual Basic controls to mark the controls safe for scripting and initialization. By default, Visual Basic controls use component category entries in the registry to mark the control safe for scripting and initialization. Implementing the IObjectSafety interface is the preferred method. This article contains all the code that is required to implement this interface in Visual Basic controls.

Please keep in mind that a control should only be marked as safe if it is, in fact, safe. This article does not describe the details of marking controls as safe for scripting and initialization; it simply demonstrates how to do it in code. Please refer to the Internet Client Software Development Kit (SDK) documentation for a detailed description of this. See 'Safe Initialization and Scripting for ActiveX Controls' under the Component Development section. WARNING: One or more of the following functions are discussed in this article: VarPtr, VarPtrArray, VarPtrStringArray, StrPtr, and ObjPtr. These functions are not supported by Microsoft Technical Support. They are not documented in the Visual Basic documentation and are provided in this Knowledge Base article 'as is.' Microsoft does not guarantee that they will be available in future releases of Visual Basic. For additional information about these functions, click the article number below to view the article in the Microsoft Knowledge Base:199824 How To Get the Address of Variables in Visual Basic The following steps illustrate how to create a simple Visual Basic control and mark it safe for scripting and initialization.

command to move to the project folder, and type the following command to generate a .tlb file:

Properties list, change the name of the project to IObjSafety and the name of the control to DemoCtl. Put a CommandButton named cmdTest on the control. In the Click event handler of the cmdTest, put a MsgBox 'Test' statement.

Project menu, click References, browse to and add Objsafe.tlb, which you created earlier.

to execute the Sub Main above. Use the m_fSafeForScripting and m_fSafeForInitializing variables to specify the values of safe for the scripting and/or initialization variables.

File menu, save your project and files. Make an OCX file from your project. Your control now implements the IObjectSafety interface. To test it, insert the control in an .htm file.

http://bbs.nsfocus.net/index.php?act=ST&f=2&t=138429&view=old本文介绍如何创建自己的代码证书(有CA证书签署的代码签名证书)

各位同学在自己动手操作之前请通篇阅读本文。尤其是各条注意事项。

不要看了前文不看后文就动手。否则很容易走上我曾经走过的弯路。

准备工作:

在http://ftp.intron.ac/pub/security/里面下载以下软件包:

OpenSSL_0.9.6a-Binary-WIN32.zip

pvknew.zip

signcode_for_IE4.exe

将它们分别解压缩。将以下文件解压缩至一个目录中:

OpenSSL_0.9.6a-Binary-WIN32.zip包中的LIBEAY32.DLL,OPENSSL.CNF,OPENSSL.EXE,

SSLEAY32.DLL

pvknew.zip中的PVK.EXE(这个程序要用到SSLEAY32.DLL)

signcode_for_IE4.exe中的makecert.exe,cert2spc.exe,signcode.exe

1.用openssl创建CA证书的RSA密钥(PEM格式):

openssl genrsa -des3 -out ca.key 1024

2.用openssl创建CA证书(PEM格式,假如有效期为一年):

openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnf

openssl是可以生成DER格式的CA证书的,很奇怪Windows却说那证书是“无效的”,

无奈,只好用IE将PEM格式的CA证书转换成DER格式的CA证书。

3.将ca.crt导入至IE中(我用的是WinME带的IE5.5)。

导入时注意一定要将证书存储至“本地计算机”。

具体步骤如下:

1)在“我的电脑”或“资源管理器”里双击该文件图标。

2)在“常规”卡片上选择“安装证书”。

3)点“下一步”至“证书导入向导”,选择“将所有的证书放入下列存储区”,

点下面的“浏览”。勾上“显示物理存储区”。选择“受信任的根目录...”下一级的

“本地计算机”。点“确定”,再点“下一步”。

4)点“完成”。

可以检查一下导入是否完全成功:

在IE的Internet选项中的“证书”中“受信任根证书颁发机构”中应该可以

看见上述的根证书。

4.IE的Internet选项中的“证书”中“受信任根证书颁发机构”中将刚才

导入的证书导出。格式为“DER编码的二进制X.509(.CER)”。

假设导出的文件名为ca.cer

5.将PEM格式的ca.key转换为Microsoft可以识别的pvk格式。

pvk -in ca.key -out ca.pvk -nocrypt -topvk

6.用codesign for IE4(不可用其它版本的签名工具,比方说for IE5的

或是VC5中带的CAB&SIGN或是.NET Framework SDK)中的makecert.exe制作

自己的有CA证书签署的证书。假设证书通用名为'IntronSoft',有效期六个月:

makecert -sv soft.pvk -iv ca.pvk -ic ca.cer -n CN=Intron的软件 -m 6 soft.cer

这时在“我的电脑”点击ca.cer的文件图标,就可以看见里面的内容了。

7.将soft.cer转换为soft.spc:

cert2spc soft.cer soft.spc

8.用signcode.exe签署自己的软件。假如是.cab文件,需要在用cabarc.exe制作的时候

用-s参数留出签名的空间(一般6144字节即可)。

cabarc.exe在http://ftp.intron.ac/pub/security/cabsign/

signcode -spc soft.spc -v soft.pvk -n Intron的软件 IntronSoft.cab

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有