淘先锋技术网

首页 1 2 3 4 5 6 7

Internet 软件分发单位是“软件包”,它由包含 .inf 文件或软件分发 (.osd) 文件(或两者都包括)的 CAB 文件 (.cab) 所组成。一个分发单位也可以包含软件组件,如 ActiveX 控件 (.ocx)、.dll 文件、.exe 文件、Java 类文件或小程序。当 Web 页上 OBJECT 元素的 CODEBASE 特性引用包含.inf 文件的 CAB 文件时,Internet Explorer 3.0 和更新的版本将自动把 CAB 文件作为软件分发单位。 
第一步:创建一个inf文件: 
INF文件是一个文本文件,指定运行控件所需要下载或者呈交的文件(比如DLL或者其它OCX)。 
一个INF文件就捆绑了CAB压缩文件所有的必须文件。 缺省情况下, 
与现有硬盘中文件版本号相同的文件不被下载。 
要了解有关INF文件及其选项(包括如何创建独立于平台的INF文件)的详细情况, 
请参考平台软件开发工具包(Platform SDK,)的设置和系统管理服务(Setup and System Management Services) 
部分的/Setup API/Overview/INF Files目录下的内容。 
下面就以我自己写的一个videoweb.dll为例子。在videoweb.dll中使用到:tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini, 
camer.ini,drivo.ini. 
video.inf的例子: 
;inf file for videoweb.dll 
[version] 
signature=$CHICAGO$ 

[DestinationDirs] 
DLLSysCopy=11 
IniWinCopy=25 

[DefaultInstall] 
CopyFiles=DllSysCopy,IniWinCopy 
AddReg=videoReg 

[DllSysCopy] 
tdiio.dll 
Decoder.dll 
VideoWeb.dll 

[IniWinCopy] 
camer.ini 
user.ini 
xvidMP4.ini 

[videoReg] 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC},"",%REG_SZ%,"Video Class" 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/Control 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/Implemented Categories 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/Implemented Categories/{7DD95801-9882-11CF-9FA9-00AA006C42C4} 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/Implemented Categories/{7DD95802-9882-11CF-9FA9-00AA006C42C4} 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/InprocServer32,"", %REG_SZ%,"%11%/VideoWeb.dll" 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/InprocServer32,"ThreadingModel",%REG-SZ%,"Apartment" 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/MiscStatus,"",%REG_SZ%,"0" 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/MiscStatus/1,"",%REG_SZ%,"131473" 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/ProgID,"",%REG_SZ%,"VideoWeb.1.1" 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/Programmable 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/ToolboxBitmap32,"",%REG_SZ%,"%11%/VideoWeb.dll,102" 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/TypeLib,"",%REG_SZ%,"{FC4352CB-BB55-498C-BB21-E4BAE2FC2584}" 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/Version,"",%REG_SZ%,"1.0" 
HKCR,CLSID/{4BDA0AA3-2164-44B7-8A88-208A145F51DC}/VersionIndependentProgID,"",%REG_SZ%,"VideoWeb.1" 
;end of INF file 

DestinationDirs:指的是装载目录或者文件的地址: 11 指定为系统目录 WINDOWS/SYSTEM 或者 WINNT/SYSTEM32; 
10 规定为窗口目录、WINDOWS或者WINNT。 
videoReg:如果是自己写的控件:可以在本地先用regsvr32 xxx.dll注册后,从注册表中找到上面的注册信息。 
当然以上仅仅是在internet上分发软件时一个很简单的inf文件,还有更复杂的inf文件。请看SDK。 

第二步:把video.inf, tdiio.dll,encoder.dll,decoder.dll,tdiio.ini,user.ini, 
camer.ini,drivo.ini.放在一个文件夹中。 
第三步:开始制作cab文件,我是用IExpress工具制作的(该工具在winnt/system32目录下面)。 
1:选择创建新的自解压指令文件。 
2:选择仅创建压缩文件(ActiveX安装) 
3:点击添加把你要供别人下载的文件添加 
4:点击浏览 输入*.cab文件的存放地址(包含文件名) 
5:就随便了 
好了制作完成。 
现在在你的网页中使用该控件,当别人访问你的网页时,如果他的机子上没有你的控件,浏览器就会自动下载安装。因为你的控件可能没有获得签名 
因此得在你的浏览器中把浏览器的安全级别降低。在internet 工具中选择安全,选择自定义。找到下载未签名的ActiveX控件。选择其下面的提示或者启用。 
在网页中插入: 
<OBJECT classid=clsid:4BDA0AA3-2164-44B7-8A88-208A145F51DC 
codebase="video.cab#version=2,0,0,1" 
id=Video1 style="HEIGHT: 507px; WIDTH: 718px"></OBJECT> 
该句. 
注意:得把*.cab 文件你和的网页放在同一目录下。或者在codebase中指定*.cab的路径。 

 

 

CAB包制作免费数字证书签名

作者:JackChen 日期:2006-05-25

想做CAB包的朋友一定为数字证书签名很烦恼。
我发现了一个简单的制作数字证书的方法,贴出来分享下吧。

1
。准备软件 InstallShield PackageForTheWeb 4 (用来把DLL或者OCX打包成CAB的软件)
2
。去
http://www.globalsign.net 申请DEMO版的证书,只能用一个月,不过是全球的,不错了。一月换一个吧。^^
3
。根据提示 一共有8步来完成申请(其中大部分NEXT即可,其中要去收2次邮件,第2次邮件就发给你证书了)

4
。按照PackageForTheWeb 的提示完成制作你的CAB,他上面要求数字证书保护的时候可以不选。
5
。打开 signcode.exe(这个程序装完PackageForTheWeb在他的安装目录下就有),按照提示,选择到你刚才申请的证书,next,最后一步要选择时间戳服务器,这里有个免费的:
http://timestamp.verisign.com/scripts/timstamp.dll 写上去就完了,这样就完成了签名。

好了。现在一个带数字签名的CAB文件已经制作完成,在IE里不会出现不安全的控件,无法安装的现象了。
赶快自己去测试下吧。

小技巧:
Q
:如何删除已经安装了的CAB内的控件。
A
1。找到主要的OCX或者DLL文件,REGSVR32 xxx.ocx /u 卸载这个DLL
2
。到C:/WINDOWS/Downloaded Program Files 下删除已经安装过的控件。就会出现再次安装了。

ActiveX签名 ()

AcitveX签名有很多种方式,现介绍我所了解的几种:

以下用到的工具请在http://ftp.intron.ac/pub/security/下载authenticode.zip文件

一,使用微软的工具不采用私钥文件

1.制作根证书

makecert -sk "myPK" -ss mySSName -n "CN=公司名称" -r myroot.cer

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

2.制作子证书

makecert -sk "myPK" -is mySSName -n "CN=公司名称" -$ commercial -ic myroot.cer test.cer
sk-
表示主题的密钥容器位置,is-颁发者的证书存储名称, n-证书颁发对象,ic-颁发者的证书存储位置,-$-授权范围(用于代码签名);

3.使用Cert2Spc生成spc发行者证书

cert2spc test.cer test.spc

4.使用signcode为你的程序,库或cab包签名:
双击signcode,或在控制台键入signcode,不带参数会启动签名向导。在第三步选择自定义选项,第四步选择从文件选择选择 test.spctest.cer,第五步选择“CSP中的私钥,在密钥容器中选择我们定义的myPK,其他步骤默认即可,如果想添加时间戳,请在时间戳服务器地址上键入:(免费时间戳认证)
http://timestamp.wosign.com/timestamp
完成后,观察你所签名的文件属性,应该已经添加数字签名项。

5.myroot.cer导入受信任的根证书颁发机构,使用chktrust测试刚才的文件是否签名成功

二,使用微软的工具采用私钥文件

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.spc

4.使用signcode为你的程序,库或cab包签名:
双击signcode,或在控制台键入signcode,不带参数会启动签名向导。在第三步选择自定义选项
第四步选择从文件选择选择test.spctest.cer
第五步选择文件中的私钥选择test.pvk,其他步骤默认即可,如果想添加时间戳,请在时间戳服务器地址上键入:(免费时间戳认证)
http://timestamp.wosign.com/timestamp
完成后,观察你所签名的文件属性,应该已经添加数字签名项。

用命令方式:signcode -spc test.spc -v test.pvk -n test的软件 test.cab

注意:用signcode.exe签署自己的软件。假如是.cab文件,需要在用cabarc.exe制作的时候
-s参数留出签名的空间(一般6144字节即可)

5.myroot.cer导入受信任的根证书颁发机构,使用chktrust测试刚才的文件是否签名成功

三,使用openssl产生根证书

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却说那证书是无效的
无奈,只好用IEPEM格式的CA证书转换成DER格式的CA证书。

3.ca.crt导入至IE中。
导入时注意一定要将证书存储至本地计算机
具体步骤如下:
1)
我的电脑资源管理器里双击该文件图标。
2)
常规卡片上选择安装证书
3)
下一步证书导入向导,选择将所有的证书放入下列存储区
点下面的浏览。勾上显示物理存储区。选择受信任的根目录...”下一级的
本地计算机。点确定,再点下一步
4)
完成

可以检查一下导入是否完全成功:
IEInternet选项中的证书受信任根证书颁发机构中应该可以
看见上述的根证书。

4.IEInternet选项中的证书受信任根证书颁发机构中将刚才
导入的证书导出。格式为“DER编码的二进制X.509(.CER)”
假设导出的文件名为ca.cer

5.PEM格式的ca.key转换为Microsoft可以识别的pvk格式。
pvk -in ca.key -out ca.pvk -nocrypt -topvk

6.步骤接第二种方式的第3

 

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

 

如何给ActiveX控件签名

2007-04-05 12:54

 

             简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,目前主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名算法有 RSAElGamalFiat-ShamirGuillou- QuisquarterSchnorrOng-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。显然, 数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(DSS)。一些国家如法国和德国已经制定了数字签名法。数字签名(Digital Signature)技术数字签名技术是不对称加密算法的典型应用。数字签名的应用过程是,数据源发送方使用自己的私钥对数据校验和或其他与数据内容有关的变量进行加密处理,完成对数据的合法签名,数据接收方则利用对方的公钥来解读收到的数字签名,并将解读结果用于对数据完整性的检验,以确认签名的合法性。数字签名技术是在网络系统虚拟环境中确认身份的重要技术,完全可以代替现实过程中的亲笔签字,在技术和法律上有保证。在公钥与私钥管理方面,数字签名应用与加密邮件 PGP技术正好相反。在数字签名应用中,发送者的公钥可以很方便地得到,但他的私钥则需要严格保密。

数字签名:数字签名验证发送方的标识并保护数据的完整性。事实上数字签名不是一种具体的技术实现,它是基于以上各种加密技术组合的解决方案。通常一个基本的数字签名方案可能有如下步骤:

 

 

双方各自生成一个公钥/私钥对。
双方交换他们的公钥。

双方生成一个用于对称加密法的私钥,并使用该对称私钥加密要发送的消息。

生成加密后消息的哈希值。

用对方的共钥加密对称私钥和哈希值(该组合密文即为签名),并将该签名附加在消息主体的密文后发送给对方。
首先要有工具包,包括以下几个软件:

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

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

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

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

还有一个certmgr.exe,是管理证书用的。

下面是具体的步骤:

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

makecert /sv "Record.PVK" /n "CN=公司名称,E=email,O=作者" dream.cer

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

DreamCaptial是你想显示的公司名

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

这些根据你自己的要求填写,最后得到Record.PVKdream.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

就这样,得到了一个测试证书,恩,虽然只是一个测试证书,但至

少保证这个ocxie浏览的时候能够弹出来一个窗口,问你是否安装,

而不是直接禁止了。