----------------------------------------------------
用VC6.0制作的ActiveX同时需要调用第三方DLL;
参考网上资料,下载一个工具把Ocx和DLL打包成一个CAB文件,然后签名;把ASP.Net代码放IIS上,客户端访问服务端时,地址栏处提示有ActiveX控件,选择允许;并没有提示下载和运行CAB文件的对话框,提示无效的签名;
在客户端直接输入CAB文件的路径,可以提示下载,弄不清楚原因。
打包时是否要自己写Ini文件?是不是CAB文件还要制作成安装文件?
安装的VC6.0上并没有打包工具,但是VB6.0自带,
是否要自己建立一个CAB项目?
----------------------------------------------------
打包成CAB用的工具是HA_cab2003b_wjk;
软件名称:Cabinet Manager 2003 4.1.0.217 汉化版
----------------------------------------------------
数字签名工具用的是SignTool;
操作步骤如下:
下面是具体的步骤:
1、创建一个自己的证书文件:
makecert /sv "test.PVK" /n "CN=test" test.cer
test.PVK表示新创建的私人密钥保存文件名;
test是你想显示的公司名,test.cer是你创建最后的证书文件名
这些根据你自己的要求填写,最后得到test.PVK和test.cer两个文件。
其中,运行过程中需要输入私人密钥的保护密码,一定要输入一致,不要
出错。2、转换cer格式为spc格式(可以省略)
cert2spc test.cer test.spc 得到test.spc文件。3、给ocx进行签名
运行signcode,命令行的我没有试验通过,我是通过界面实现的。
signcode运行后会出现数字签名向导,首先选择你要签名的ocx,
下一步后会出现签名选项,一种是典型,一种是自定义。选择自定义,
这样才能从文件选择证书,选择前面制作的test.spc,再下一步是
选择私钥文件,选择test.PVK,输入私人密钥的保护密码,选择散
列算法,下一步是选择其他证书,直接下一步,
填写一下这个控件的声明,用户用ie浏览的时候,会弹出证书说明,
再下一步是加盖时间戳,没有加时间戳;4、用chktrust检查是否正确 
chktrust -v test.cab弹出的对话框并不是安全警告;
提示签名无效,但是在命令行下按照步骤操作都提示成功。
----------------------------------------------------

解决方案 »

  1.   

    肯定要自己写ini文件,格式很简单的。我打包是用的wincab这么一个工具,很简单,cab就是打包,其中的ini文件就是安装信息,IE在打开cab包的时候会根据ini文件对cab包内的文件进行注册及分布。另外,signtools提供的签名用的证书(或用其工具生成的证书)都只能在局域网内测试用,除非你要求客户安装你测试用证书的根证书。1.制作根证书 makecert -sv "myroot.pvk" -ss mySSName -n "CN=公司名称" -r myroot.cer sv-私钥文件名,ss-主题的证书存储名称, n-证书颁发对象,r-证书存储位置; 2.制作子证书 makecert -sv "test.pvk" -iv myroot.pvk -n "CN=公司名称" -$ commercial -ic myroot.cer test.cer
    sv-私钥文件名,iv-根证书的私钥文件, n-证书颁发对象,ic-颁发者的证书存储位置,-$-授权范围(用于代码签名); 3.使用Cert2Spc生成spc发行者证书 cert2spc test.cer test.spc4.使用signcode为你的程序,库或cab包签名.
    其中,第四步选择“从文件选择”选择test.spc或test.cer,第五步选择“文件中的私钥”选择test.pvk,其他步骤默认即可.5.将myroot.cer导入“受信任的根证书颁发机构”
    重点是这个,如果你要让客户也能够打开控件,就需要客户也要做这个步骤的工作
      

  2.   

    谢谢楼上朋友的回复;
    Ini文件是不是要自己写,然后跟Ocx和DLL文件一起打包成CAB文件?
    然后IE下载后根据Ini文件对Ocx进行注册?
      

  3.   

    对,就是这样,ini文件的格式也比较简单,你拿个现成的来看下就知道了,主要是控件ID,就是控件的GUID,还有控件引用了哪些文件,每个文件应该在去哪找,就这些东西。
      

  4.   

    谢谢楼上朋友的回复,我再试下看看;感觉打包成CAB自己并不能直接运行,
    是不是浏览器可以自动执行这个文件?还试过打包成Exe文件,
    双击该文件只是解把这几个文件释放到指定的目录
      

  5.   

    对,Cab包不能直接执行,但会被IE识别,并根据Cab包内的安装信息也就是ini文件内的信息进行安装