对于 Internet 应用程序的开发人员和用户而言,恶意的代码、被篡改的代码和来自未知站点或作者的代码对代码的安全都会造成不小的威胁。对此我们可以使用数字签名的方法来保证安全。

数字签名是用于识别和提供关于代码发行者的详细资料的工业标准,对 Internet 称为“收缩包装”。使用私匙/公匙技术验证和签名代码。在代码运行之前,验证其数字签名,确保该代码的来源是已知的并且经过验证,并且自签名后该代码未被更改过。给文件签名首先要获得软件发行证书。为此,必须向证书颁发机构提出请求。步骤如下:

1、 获得软件发行证书

第一步:开始菜单->运行,输入cmd.exe。打开windows 2000的命令提示符环境窗口。

第二步:输入CD C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin,进入该目录,用dir命令你可以看到signcode.exe、makecert.exe和cert2spc.exe程序。注意:以上路径根据你机器Microsoft.Net的安装路径不同而异。

第三步:创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。输入makecert -sk WHX -n "CN=WHX COMPANY" c:\testWHX.cer。就会在你的C:生成testWHX.cer文件。

说明:参数-n指定主题的证书名称。此名称必须符合 X.500 标准。最简单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,"CN=myName"。注意这里的CN必须大写。-sk指定主题的密钥容器位置,该位置包含私钥。如果密钥容器不存在,系统将创建一个。输入makecert -?可以查看其他参数的用法。

第四步:创建发行者证书 (SPC)。注意,发行者证书测试工具通过一个或多个 X.509 证书创建发行者证书 (SPC)。Cert2spc.exe 仅用于测试目的。可以从证书颁发机构(如 VeriSign 或 Thawte)获得有效的 SPC。输入命令:cert2spc c:\testWHX.cer c:\testWHX.spc,在C:盘生成证书文件。至此,你已经拥有了仅用于测试的软件证书。其实,我们开发的程序或ActiveX控件只要仅用于企业内部,完全可以用这种办法作数字签名,使你的控件可以在浏览器里自动下载,而不必去专门的证书办法机构获得证书。

Microsoft.Net中的数字签名技术

2、 创建CAB文件

CAB文件是一种WINDOWS的标准压缩格式文件,在网页上发布ActiveX的时候经常使用该压缩格式对文件进行包装,目的是使文件便于在Internet上传输。创建CAB文件的方法有很多,可以在Microsoft visual studio .Net 2003中“创建CAB项目“,也可以用WINDOWS自带的iexpress.exe(c:\windows\system32目录下),甚至还有其他的压缩工具。

3、 签署文件

在上面打开的dos窗口里,输入如下命令:signcode /spc c:\testWHX.spc /k WHX c:\whx.cab

至此,已经对成功对whx.cab文件签名。可以查看文件的属性,查看数字签名。