迅雷注册-谷歌账号怎么注册

数字签名工具
2023年4月5日发(作者:深度xp sp3)

制作cab包与数字签名

文档作者:______冯光强__________日期:2010/01/28

开发/测试经理:______________________日期:___/___/___

产品经理:______________________日期:___/___/___

管理办:______________________日期:___/___/___

目录

1概述.........................................................................................................................................1

1.1Active控件.................................................................................................................1

1.2Cab打包.....................................................................................................................2

1.3数字签名.....................................................................................................................2

2工具作用及其参数.................................................................................................................3

2.1工具.............................................................................................................................3

2.2证书创建工具参数.....................................................................................................3

2.3文件签名工具参数.....................................................................................................6

3构建cab包..............................................................................................................................8

4生成证书文件.........................................................................................................................8

5进行数字签名.........................................................................................................................8

6OCX在网页上显示..............................................................................错误!未定义书签。

参考资料................................................................................................................................................15

附件1.....................................................................................................................................................15

制作cab与数字签名,/ifenggq

第1页共16页

1概述

1.1Active控件

ActiveX控件是使用OBJECT标记嵌入到网页中的。OBJECT标记的CODEBASE属性指

定从中下载控件的位置。CODEBASE可以成功地指向一组不同的文件类型。

例如,CODEBASE可以直接指向.ocx文件,如下所示:

CODEBASE="/#version=4,7

0,0,1086"

因为这将仅下载和安装.ocx文件,所以这种解决方案依赖于客户机上已有的任何必要

的支持DLL。在多数情况下,应该假设这些DLL不会存在于客户端上,而且不是正确的版

本。

另一种可供选择的方法是将CODEBASE指向.inf文件,例如:

CODEBASE="/"

.inf文件控制.ocx文件及其支持文件的安装。不推荐使用这种方法,因为这种方法

不能对.inf文件进行签名(请参见“参考资源”一节以获得有关代码签名的参考资料)。

最佳的解决方案是CODEBASE指向CAB文件。使用这种方法,可以引用支持DLL并对CAB

文件进行签名。

注意:如果遵循以下引用MFCDLL的说明,当客户端上已有MFCDLL时,则不对它们进行

下载。CODEBASE行类似如下内容:

CODEBASE="/#version=1,2,0,

0"

注意,其中的#Version信息适用于OBJECT标记的CLASSID参数所指定的控件版本。

1.2Cab打包

在Cabinet软件开发工具包(也称为CabinetSDK或CAB开发工具包)中,可以找

到构造CAB(.cab)文件所需的工具。请参见以下Microsoft网站:

MicrosoftCabinetSDK

/library/?url=/library/en-us/dncabsdk/html/

CODEBASE指向的CAB文件应当包含.ocx文件和控制ActiveX控件安装的.inf文

件。在此CAB文件中,不应包含系统中已有的相关DLL(如MFCDLL)。相反,MFCDLL和

其他相关DLL应当包装在单独的CAB文件中,并且可以由控件的.inf文件引用。以下示

例说明如何打包MFCSpindial示例控件。

将Spindial控件包含到网页中的OBJECT标记类似以下内容:

CLASSID="CLSID:06889605-B8D0-101A-91F1-00608CEAD5B3"

CODEBASE="/#Version=

1,0,0,001">

1.3数字签名

任何软件提供商要想通过网络来发布代码或程序,都会面临着软件被仿冒和篡改的风

险。通过数字证书使用代码签名技术就可以有效地防范这些风险。代码签名证书是CA中心

签发给软件提供商的数字证书,包含软件提供商的身份信息、公钥及签名。软件提供商使用

代码签名证书对软件进行签名后放到Internet上,当用户在Internet上下载该软件时,将

会得到提示,从而可以确信软件的来源和软件自签名后到下载前没有遭到修改或破坏。

对于用户来说,使用代码签名证书可以清楚了解软件的来源和可靠性,增强了用户使用

Internet获取软件的决心。万一用户下载的是有害软件,也可以根据证书追踪到软件的来

源。对于软件提供商来说,使用代码签名证书,其软件产品更难以被仿造和篡改,增强了软

件提供商与用户间的信任度和软件商的信誉。

2工具作用及其参数

2.1工具

CabMaker:用于制作cab包,下载地址:/source/2030553

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

:将证书签署到ocx上去

2.2证书创建工具参数

证书创建工具(M)

证书创建工具生成仅用于测试目的的X.509证书。它创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。

此工具还将密钥对与指定发行者的名称相关联,并创建一个X.509证书,该证书将用户指定的名称绑定到密钥对的公

共部分。

包含基本选项和扩展选项。基本选项是最常用于创建证书的选项。扩展选项提供更多的灵活性。

makecert[options]outputCertificateFile

参数说明

outputCertificateFile

测试X.509证书要写入的.cer文件的名称。

2.2.1基本选项

选项说明

-nx509name

指定主题的证书名称。此名称必须符合X.500标准。最简单的方法是在双

引号中指定此名称,并加上前缀CN=;例如,"CN=myName"。

-skkeyname

指定主题的密钥容器位置,该位置包含私钥。如果密钥容器不存在,系统将

创建一个。

-srlocation

指定主题的证书存储位置。Location可以是currentuser(默认值)或

localmachine。

-ssstore

指定主题的证书存储名称,输出证书即存储在那里。

-#number

指定一个介于1和2^31-1之间的序列号。默认值是由

生成的唯一值。

-$authority

指定证书的签名权限,必须设置为commercial(对于商业软件发行者使

用的证书)或individual(对于个人软件发行者使用的证书)。

-?

显示此工具的命令语法和基本选项列表。

-!

显示此工具的命令语法和扩展选项列表。

2.2.2扩展选项

选项说明

-aalgorithm

指定签名算法。必须是md5(默认值)或sha1。

-b

mm/dd/yyyy

指定有效期的开始时间。默认为证书的创建日期。

-cycertType

指定证书类型。有效值是end(对于最终实体)、authority(对于证书

颁发机构),或both。

-dname

显示主题的名称。

-e

mm/dd/yyyy

指定有效期的结束时间。默认为12/31/203911:59:59GMT。

-ekuoid[,oid]

将用逗号分隔的增强型密钥用法对象标识符(OID)列表插入到证书中。

-hnumber

指定此证书下面的树的最大高度。

-icfile

指定颁发者的证书文件。

-ikkeyName

指定颁发者的密钥容器名称。

-ikykeytype

指定颁发者的密钥类型,必须是signature、exchange或一个整数(如

4)。

-inname

指定颁发者的证书公用名称。

-ipprovider

指定颁发者的CryptoAPI提供程序名称。

-irlocation

指定颁发者的证书存储位置。Location可以是currentuser(默认值)

或localmachine。

-isstore

指定颁发者的证书存储名称。

-ivpvkFile

指定颁发者的.pvk私钥文件。

-iypvkFile

指定颁发者的CryptoAPI提供程序类型。

-llink

到策略信息的链接(例如,一个URL)。

-mnumber

以月为单位指定证书有效期的持续时间。

-nscp

包括Netscape客户端身份验证扩展。

-r

创建自签署证书。

-scfile

指定主题的证书文件。

-skykeytype

指定主题的密钥类型,必须是signature、exchange或一个整数(如

4)。

-spprovider

指定主题的CryptoAPI提供程序名称。

-svpvkFile

指定主题的.pvk私钥文件。如果该文件不存在,系统将创建一个。

-sytype

指定主题的CryptoAPI提供程序类型。

2.2.3示例

下面的命令创建一个测试证书,并将其写入。

下面的命令使用主题的密钥容器和证书主题的X.500名称创建一个测试证书,并将其写入。

makecert-skXYZ-n"CN=XYZCompany"

2.3文件签名工具参数

文件签名工具()

文件签名工具使用Authenticode数字签名对可移植可执行(PE)文件(.dll或.exe文件)进行签名。可以对多文

件程序集中包含的某个程序集或个别的文件进行签名。如果要分发某个程序集,则应该对该程序集而不是对个别文件签

名。不指定任何选项运行将启动帮助签名的向导。

signcode[options]filename|assemblyname

参数说明

filename

要签名的PE文件的名称。

assemblyname

要签名的程序集的名称。此文件必须包含程序集清单。

选项说明

-$authority

指定证书的签名权限,必须为individual或commercial。默认情况

下,使用证书的最高权限。

-aalgorithm

指定签名的哈希算法,必须为md5(默认值)或sha1。

-cfile

指定包含编码软件发布证书的文件。

-cnname

指定证书的公共名。

-iinfo

指定获得有关内容的更多信息的位置(通常为URL)。

-jdllName

指定一个DLL的名称,该DLL返回用于创建文件签名的已验证属性数

组。通过重复-j选项可以指定多个DLL。

-jpparam

指定为前述DLL传递的参数。例如:-jdll1-jpdll1Param。此工具

只允许每个DLL有一个参数。

-kkeyname

指定密钥容器名。

-kykeytype

指定密钥类型,必须为signature、exchange或一个整数(如4)。

-nname

指定表示要签名的文件内容的文本名称。

-pprovider

指定系统上的加密提供程序的名称。

-rlocation

指定注册表中证书存储区的位置,必须为currentuser(默认值)或

localmachine。

-sstore

指定包含签名证书的证书存储区。默认为my存储区。

-sha1

thumbprint

指定thumbprint,它是包含在证书存储区中的签名证书的sha1哈希。

-sppolicy

设置证书存储区策略,必须为spcStore(默认值)或chain。如果指

定chain,则验证链中的所有证书(包括自签署证书)都将被添加到签名

中。如果指定spcStore,则受信任的自签署证书将不与验证链中添加到

签名的证书包括在一起。

-spcfile

指定包含软件发布证书的SPC文件。

-tURL

指示位于指定http地址的时间戳服务器将为该文件创建时间戳。

-trnumber

指定成功前试验时间戳的最多次数,默认为1。

-twnumber

指定两次数据戳试验之间的延迟(以秒为单位)。默认为0。

-vpvkFile

指定包含私钥的私钥(.pvk)文件名。

-x

为文件创建时间戳,但不创建签名。

-ytype

指定要使用的加密提供程序类型。

-?

显示此工具的命令语法和选项。

2.3.1备注

若要使用发行者证书(SPC)文件创建签名,如果私钥在PVK文件中,则必须指定-spc和-v选项。如果私钥在注

册表密钥容器中,则必须指定-spc和-k选项。如果要使用SPC文件为文件创建签名,应使用证书创建工具和软

件发行者证书测试工具创建SPC文件。

2.3.2示例

下面的命令使用软件发行者证书和注册表密钥容器XYZ中的私钥来对进行签名。

signcode//

下面的命令使用中的证书和中的私钥对程序集myAssembly进行签名。

signcode//ssembly

3构建cab包

以构建DVR_举例说明,步骤如下:

1.制作DVR_控件

2.编写DVR_文件,详细内容见附件1

3.把DVR_与DVR_放到同一下目录下(如D:DVR)

4.利用CabMaker工具把目标目录(如:D:DVR)打成cab包

4生成证书文件

进入DOS模式下该目录,为了便于操作,建议你将这个工具包放在磁盘根目录下,目录名

称起得简单些。

输入以下命令,生成一个名为的证书

makecert-skmyPK-ssmyName-n"CN=贵州京安丹灵科技有限责任公司"-$co

mmercial-rD:

注:存放证书的地址不宜过长。

5进行数字签名

进入DOS模式,在命令提示行中执行:signtoolsignwizard进入signcodewizard,如下图

(图1)

第一步:选择要签名的cab文件,如下图

(图2)

第二步:自定义,如下图

(图3)

第三步:从文件中选择

(图4)

(图5)

第四步csp中的私钥/密钥容器:myPK

(图6)

(图7)

第五步:选择sha1

(图8)

第六步:下一步

(图9)

第七步:描述:档案管理系统

(图10)

第八步:下一步

(图11)

第九步:完成

(图12)

(图13)

至此,数字签名完成

参考资料

:///kb/q167158/

:///runontheway/archive/2009/03/28/

附件1

以下是有关MFCDVR_OCX控件的示例文件.inf。通过将DVR_OCX信息更改为所需的

MFCActiveX控件信息,可以修改此.inf文件以下载任何MFCActiveX控件。请参见以下

注释。

;=========================DVR_========================

;ewillcontroltheinstallationoftheMFCSpindial

;ntrolhasbeencompiledwithVisualC++version4.2.

;TheFileVersiontagsinthedependentDLLssectiononthisfile

;reflectthisrequirement.

[version]

;versionsignature(sameforbothNTandWin95)donotremove

signature="$CHICAGO$"

AdvancedINF=2.0

[]

DVR_=DVR_

;ThesearethenecessarysupportingDLLsforMFC4.2ActiveXControls

;thiscabisakeywordwhich,inthiscase,

;e

;file-win32-x86isanx86platformspecificidentifier

;SeetheActiveXSDK-ActiveXControls-InternetComponentDownload-

;Packagingcomponentcodeforautomaticdownload

[DVR_]

file-win32-x86=thiscab

;***addyourcontrolsCLSIDhere***

clsid={81F3AB92-8B18-4E35-B84F-FF8583598E1A}

;Addyourocx'sfileversionhere.

FileVersion=1,0,0,3

RegisterServer=yes

;===========================================

根据控件以及创建控件所使用的MFC版本,需要对此.inf文件的以下部分加以修改:

对DVR_OCX的任何引用均应更改为控件的名称。这包括注释和以下内容:

DVR_=DVR_

[DVR_]

应该将以下内容更改为控件的正确CLSID和文件版本:

clsid={81F3AB92-8B18-4E35-B84F-FF8583598E1A}

FileVersion=1,0,0,3

更多推荐

数字签名工具