S.l.e!ep.¢%

像打了激速一样,以四倍的速度运转,开心的工作
简单、开放、平等的公司文化;尊重个性、自由与个人价值;
posts - 1098, comments - 335, trackbacks - 0, articles - 1
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

CAB 包制作 简单方法

Posted on 2009-09-10 17:01 S.l.e!ep.¢% 阅读(1248) 评论(0)  编辑 收藏 引用 所属分类: COM
CAB 包制作 简单方法
2009-08-22 00:47

IExpress是微软为压缩CAB文件及制作安装程序所开发的小工具,其实应该算是MAKECAB的一个Shell。虽一直藏身于微软的产品中,却从未对它说明过,但不能否认是一款不错的免费软件。

打开 C:\WINDOWS\SYSTEM 文件夹,运行iexpress.exe,其中会使用到三个文件为:makecab.exe(CAB 文件制作工具)、iexpress.exe(CAB 自解压文件制作向导)、wextract.exe(CAB 自解压文件的“头”文件)。
介绍一下 Iexpress 的用法。 运行 iexpress.exe,出现 Iexpress Wizard(向导),然后依次按“下一步”进入各步骤;
(1)选择默认选项“Create new Self Extraction Directive file”(建立新的自解压文件);
(2)选择“Extract file only”(仅解压文件)单选钮;

(3)后面的根据提示进行制作既可。


给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.spc或test.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.spc或test.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却说那证书是“无效的”,
无奈,只好用IE将PEM格式的CA证书转换成DER格式的CA证书。

3.将ca.crt导入至IE中。
导入时注意一定要将证书存储至“本地计算机”。
具体步骤如下:
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.步骤接第二种方式的第3步

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

如何给ActiveX控件签名

2007-04-05 12:54

             简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,目前主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名算法有 RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-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.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

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

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

而不是直接禁止了。


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理