这是个经典问题了,首先去MS的网站上下载CODESIGN.EXEP这个文件,这是个自解压文件,然后确保你的机器用的是WIN2000或更多版本的windows(版本低了会气死人的哦),一定要先在上句指定的系统中打包,然后按以下示例做。
工具包包括以下几个软件:
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=DreamCaptial" 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你在网页中是否以如下形式引用这个已签名的CAB包了呢?
<OBJECT ID="yourAX" 
    CLASSID="CLSID:B5461185-5F1B-11D3-AFB6-D88009C10000" 
    CODEBASE="yourAX.CAB#version=2,0,3,0">
要看你的CAB文件是否已数字签名,在Win2000下右键先这个CAB文件->属性
这时除了通常的“常规”项外,还有一个“数据签名”标签。在那里你可看到你的数字签名信息。
还有一个很关键的内容,就是把控件打包时,要附一个inf文件,说明这个包内的文件是否注册,解压目录,文件版本的信息。以下是一个例子,参照修改。
yourAX.CAB文件用yourAX.inf的内容[version]
signature="$CHICAGO$"
AdvancedINF=2.0[Add.Code]
test.dll=test.dll
yourAX.inf=yourAX.inf[test.dll]
file=yourAX.CAB
RegisterServer=yes 
clsid={7E0CDEE7-DC80-4F37-9410-790BB5E9270E}
DestDir=10
FileVersion=1,0,0,1[yourAX.inf]
file=yourAX.CAB

解决方案 »

  1.   

    请问,您有没有用过CODESIGN.EXE文件 啊,麻烦吗
      

  2.   

    您说的这种办法我诚然知道,但我所迷惑的是如何检查客户端浏览器的安全级别以提示用户,比如“禁止下载、运行activex”、“禁止活动脚本”这些,因为即使你用codesign打包了,如果禁止的话照样不行,你想想连脚本都不让执行还怎么调用activex的方法?