2024年3月14日发(作者:)

一、 Internet安全与数字签名

对于 Internet 应用程序的开发人员和用户而言,代码安全是一个主要问

题。有下列风险:恶意的代码、被篡改的代码和来自未知站点或作者的代码。

为 Internet 开发时有两种保证安全的基本方法。第一种方法称为"沙箱

"。在此方法中,应用程序只能访问一组特定的API, 并且被从潜在危险的 API

(如文件 I/O,程序可能在此毁坏用户计算机中的数据)中排除。第二种方法使

用数字签名来实现。此方法对 Internet 称为"收缩包装"。使用私匙/公匙技术

验证和签名代码。在代码运行之前,验证其数字签名,确保该代码的来源是已知

的并且经过验证,并且自签名后该代码未被 更改过。

在第一种情形中,信任应用程序不会有任何损害,并且信任该应用程序的来

源。在第二种情形中,使用数字签名来验证真伪。数字签名是用于识别和提供关

于代码发行者的详细资料的工业标准。其技术基于标准,包括 RSA 和 X.509。

浏览器一般允许用户选择是否希望下载并运行来源未知的代码。

本 文主要讨论第二中情形"数字签名"。给文件签名首先要获得软件发行证

书。为此,必须向证书颁发机构提出请求。在申请期间,必须生成一个密匙对并

向证书颁发 机构提供标识信息(如名字、地址和公匙)。还必须作出在法律上

具有约束力的保证,即保证您不能也不会分发您知道或本应知道含有病毒或将以

其他方式恶意损害 用户的计算机或代码的软件。

在本文的例子中,使用带的MAKECERT和CERT2SPC实用工具

生成测试的软件发行证书。当然,对软件发行是无效的,仅可用于测试代码签名。

二、 创建签名的CAB文件

本例使用Microsoft visual studio .Net 2003开发工具。所以你必须拥有

Microsoft visual studio .Net 2002以上版本的环境。

1、获得软件发行证书(测试)

第一步:开始菜单->运行,输入。打开windows 2000的命令提示

符环境窗口。

第二步:输入CD C:Program FilesMicrosoft Visual Studio .NET

2003SDKv1.1Bin,进入该目录,用dir命令你可以看到、

和程序。注意:以上路径根据你机器

的安装路径不同而异。

第三步:创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。

输入makecert -sk WHX -n "CN=WHX COMPANY" c: 。

就会在你的C:生成文件。

说 明:参数-n指定主题的证书名称。此名称必须符合 X.500 标准。最简

单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,"CN=myName"。注

意这里的CN必须大写。-sk指定主题的密钥容器位置,该位置包含私钥。如果

密钥容器不存在,系统将创建一个。 输入makecert -?可以查看其他参数的用

法。

第四步:创建发行者证书 (SPC)。

注意,发行者证书测试工具通过一个或多个 X.509 证书创建发行者证书

(SPC)。 仅用于测试目的。可以从证书颁发机构(如 VeriSign 或

Thawte)获得有效的 SPC。

输 入命令:cert2spc c: c: ,在C:盘生成证书文

件。至此,你已经拥有了仅用于测试的软件证书。其实,我们开发的程序或

ActiveX控件只要仅用于企业内部, 完全可以用这种办法作数字签名,使你的

控件可以在浏览器里自动下载,而不必去专门的证书办法机构获得证书。

2、创建CAB文件

CAB 文件是一种WINDOWS的标准压缩格式文件,在网页上发布ActiveX的时

候经常使用该压缩格式对文件进行包装,目的是使文件便于在Internet 上传

输。创建CAB文件的方法有很多,可以在Microsoft visual studio .Net 2003

中"创建CAB项目",也可以用WINDOWS自带的(c:windowssystem32

目录下),甚至还有其他的压缩工具。

下面描述的使用方法。在开始菜单->运行里输入iexpress,

按如下图示操作。

打包,出自:

/applic/prog/htm2003/20031219_

一、 Internet安全与数字签名

对于 Internet 应用程序的开发人员和用户而言,代码安全是一个主要问

题。有下列风险:恶意的代码、被篡改的代码和来自未知站点或作者的代码。

为 Internet 开发时有两种保证安全的基本方法。第一种方法称为"沙箱

"。在此方法中,应用程序只能访问一组特定的API, 并且被从潜在危险的 API

(如文件 I/O,程序可能在此毁坏用户计算机中的数据)中排除。第二种方法使

用数字签名来实现。此方法对 Internet 称为"收缩包装"。使用私匙/公匙技术

验证和签名代码。在代码运行之前,验证其数字签名,确保该代码的来源是已知

的并且经过验证,并且自签名后该代码未被 更改过。

在第一种情形中,信任应用程序不会有任何损害,并且信任该应用程序的来

源。在第二种情形中,使用数字签名来验证真伪。数字签名是用于识别和提供关

于代码发行者的详细资料的工业标准。其技术基于标准,包括 RSA 和 X.509。

浏览器一般允许用户选择是否希望下载并运行来源未知的代码。

本 文主要讨论第二中情形"数字签名"。给文件签名首先要获得软件发行证

书。为此,必须向证书颁发机构提出请求。在申请期间,必须生成一个密匙对并

向证书颁发 机构提供标识信息(如名字、地址和公匙)。还必须作出在法律上

具有约束力的保证,即保证您不能也不会分发您知道或本应知道含有病毒或将以

其他方式恶意损害 用户的计算机或代码的软件。

在本文的例子中,使用带的MAKECERT和CERT2SPC实用工具

生成测试的软件发行证书。当然,对软件发行是无效的,仅可用于测试代码签名。

二、 创建签名的CAB文件

本例使用Microsoft visual studio .Net 2003开发工具。所以你必须拥有

Microsoft visual studio .Net 2002以上版本的环境。

1、获得软件发行证书(测试)

第一步:开始菜单->运行,输入。打开windows 2000的命令提示

符环境窗口。

第二步:输入CD C:Program FilesMicrosoft Visual Studio .NET

2003SDKv1.1Bin,进入该目录,用dir命令你可以看到、

和程序。注意:以上路径根据你机器

的安装路径不同而异。

第三步:创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。

输入makecert -sk WHX -n "CN=WHX COMPANY" c:。

就会在你的C:生成文件。

说 明:参数-n指定主题的证书名称。此名称必须符合 X.500 标准。最简

单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,"CN=myName"。注

意这里的CN必须大写。-sk指定主题的密钥容器位置,该位置包含私钥。如果

密钥容器不存在,系统将创建一个。 输入makecert -?可以查看其他参数的用

法。

第四步:创建发行者证书 (SPC)。

注意,发行者证书测试工具通过一个或多个 X.509 证书创建发行者证书

(SPC)。 仅用于测试目的。可以从证书颁发机构(如 VeriSign 或

Thawte)获得有效的 SPC。

输 入命令:cert2spc c: c:,在C:盘生成证书

文件。至此,你已经拥有了仅用于测试的软件证书。其实,我们开发的程序或

ActiveX控件只要仅用于企 业内部,完全可以用这种办法作数字签名,使你的

控件可以在浏览器里自动下载,而不必去专门的证书办法机构获得证书。

2、创建CAB文件

CAB 文件是一种WINDOWS的标准压缩格式文件,在网页上发布ActiveX的时

候经常使用该压缩格式对文件进行包装,目的是使文件便于在Internet 上传

输。创建CAB文件的方法有很多,可以在Microsoft visual studio .Net 2003

中"创建CAB项目",也可以用WINDOWS自带的

(c:windowssystem32目录下),甚至还有其他的压缩工具。

下面描述的使用方法。在开始菜单->运行里输入iexpress,

按如下图示操作。

南京 王海轩

在c:创建 文件。

也可不使用 CAB 文件而直接签名 DLL

和 OCX。CAB 文件的优势在于压缩,而且如

果与 INF 文件

一起使用,它可将所有必要的代码绑定在一

起。

3、签署文件

在上面打开的dos窗口里,输入如下命

令:

signcode /spc c: /k WHX

c:

至此,已经对成功对文件签名。

可以查看文件的属性,查看数字签名。

4、嵌入到WEB页

使用标记将控件嵌入在 Web 页上。在

三、结束语

以上举例说明了在环境

中,使用数字签名工具对Cab文件的签名过

程。同样也适用于对dll、ocx、exe文件的

签名。笔者在windows xp 、Microsoft

visual studio .Net 2003下调试通过。