Microsoft.Net中数字签名技术

原创 2004年03月08日 11:36:00

作者:王海轩  e-mail:wanghaixuan@lianchuang.com<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

      Microsoft.Net中数字签名技术

南京 王海轩

  本文以Microsoft.Net中创建签名的CAB文件为例,说明怎样创建签名文件,从而使你的代码可以安全的在INTERNET上发布。希望能起到抛转引玉的作用。

关键字数字签名,ActiveXCAB

 

一、 Internet安全与数字签名

对于 Internet 应用程序的开发人员和用户而言,代码安全是一个主要问题。有下列风险:恶意的代码、被篡改的代码和来自未知站点或作者的代码。

Internet 开发时有两种保证安全的基本方法。第一种方法称为沙箱。在此方法中,应用程序只能访问一组特定的API,并且被从潜在危险的 API(如文件 I/O,程序可能在此毁坏用户计算机中的数据)中排除。第二种方法使用数字签名来实现。此方法对 Internet 称为收缩包装。使用私匙/公匙技术验证和签名代码。在代码运行之前,验证其数字签名,确保该代码的来源是已知的并且经过验证,并且自签名后该代码未被更改过。

在第一种情形中,信任应用程序不会有任何损害,并且信任该应用程序的来源。在第二种情形中,使用数字签名来验证真伪。数字签名是用于识别和提供关于代码发行者的详细资料的工业标准。其技术基于标准,包括 RSA X.509。浏览器一般允许用户选择是否希望下载并运行来源未知的代码。

本文主要讨论第二中情形“数字签名”。给文件签名首先要获得软件发行证书。为此,必须向证书颁发机构提出请求。在申请期间,必须生成一个密匙对并向证书颁发机构提供标识信息(如名字、地址和公匙)。还必须作出在法律上具有约束力的保证,即保证您不能也不会分发您知道或本应知道含有病毒或将以其他方式恶意损害用户的计算机或代码的软件。

       在本文的例子中,使用Microsoft.Net带的MAKECERTCERT2SPC实用工具生成测试的软件发行证书。当然,对软件发行是无效的,仅可用于测试代码签名。

二、 创建签名的CAB文件

本例使用Microsoft visual studio .Net 2003开发工具。所以你必须拥有Microsoft visual studio .Net 2002以上版本的环境。

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控件只要仅用于企业内部,完全可以用这种办法作数字签名,使你的控件可以在浏览器里自动下载,而不必去专门的证书办法机构获得证书。                    

2、  创建CAB文件

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

下面描述iexpress.exe的使用方法。在开始菜单->运行里输入iexpress,按如下图示操作。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />CSDN_Dev_Image_2004-3-6003450.png

CSDN_Dev_Image_2004-3-6003452.png

CSDN_Dev_Image_2004-3-6003454.png

CSDN_Dev_Image_2004-3-6003456.png

CSDN_Dev_Image_2004-3-6003458.png

c:/创建whx.CAB 文件。

也可不使用 CAB 文件而直接签名 DLL OCXCAB 文件的优势在于压缩,而且如果与 INF 文件一起使用,它可将所有必要的代码绑定在一起。

3、  签署文件

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

signcode /spc c:/testWHX.spc /k WHX c:/whx.cab

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

CSDN_Dev_Image_2004-3-60034510.png

4、  嵌入到WEB页

使用 <OBJECT> 标记将控件嵌入在 Web 页上。在 <OBJECT> 标记内部,需要为控件指定三个属性:

  • ID   控件的名称

  • CLASSID   控件的 CLSID

  • CODEBASE   控件的下载位置。请注意,CODEBASE 可成功指向许多不同的文件。CODEBASE 可以直接指向 OCX DLL 文件。这里codeBase可以指向你的web程序的相对URL路径。如:

<OBJECT id=”dropdownlist1”codeBase="whx.CAB" height="25" width="100" classid="clsid:DD9DA666-8594-11D1-B16A-00C0F0283628" >

                </OBJECT>

三、 结束语

以上举例说明了在microsoft.net环境中,使用数字签名工具对Cab文件的签名过程。同样也适用于对dll、ocx、exe文件的签名。笔者在windows xp Microsoft visual studio .Net 2003下调试通过。

Microsoft.Net中数字签名技术

转自 赛迪网 作者: 来源:cfan 发布时间:2006.07.27本文以Microsoft.Net中创建签名的CAB文件为例,说明怎样创建签名文件,从而使你的代码可以安全的在INTERNET上发布。...
  • eaglet
  • eaglet
  • 2007年07月10日 08:16
  • 1167

Microsoft.Net里面数字签名技术

一、 Internet安全与数字签名 对于 Internet 应用程序的开发人员和用户而言,代码安全是一个主要问题。有下列风险:恶意的代码、被篡改的代码和来自未知站点或作者的代码。 为 Interne...
  • webajax
  • webajax
  • 2008年07月23日 13:49
  • 380

Microsoft.Net中数字签名技术介绍

http://www.zxbc.cn/html/20070818/26220.html 概  述:本文以Microsoft.Net中创建签名的CAB文件为例,说明怎样创建签名文件,从而使你的代码可以安...
  • yeraneom
  • yeraneom
  • 2011年06月29日 15:32
  • 65

数字签名与数字证书技术简介(一)

数字签名、数字证书等技术,是现代信息安全的核心技术,可谓使用面十分广泛。其基本理论本身并不复杂,本文希望通过深入浅出的介绍,能够让大家有一些基本了解。   一、对称加密、非对称加密 让我们通过一个例子...
  • u014419512
  • u014419512
  • 2014年05月19日 23:54
  • 3967

数字签名技术简介

笔记小结 知识点1. 非对称密钥加密技术 非对称密钥加密算法需要两个不同的密码来加密、解密,即公开密钥和私有密钥。 公钥和私钥是一对,公钥加密的数据必须用对应的私钥来解密,反之亦然,这种算法叫做非...
  • yuzhangsir
  • yuzhangsir
  • 2017年07月27日 18:44
  • 326

数字签名技术

1.什么是电子签名 电子签名指数据电文中以电子形式所含、所附用于识别签名人身份并表明签名人认可其中内容的数据。通俗地说,电子签名就是通过密码技术对电子文档的电子形式的签名,并非是书面签名的数字图像化,...
  • u011630575
  • u011630575
  • 2016年11月20日 15:14
  • 417

数字签名原理及其应用

签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。 我们知道,手写签名之所以不能伪造,是因为每一个人的笔迹都是...
  • qmickecs
  • qmickecs
  • 2017年06月25日 15:40
  • 1724

身份认证技术

1. 身份认证往往涉及三个方面,认证、授权和审计 a) 认证:在做任何动作之前必须要有方法来识别动作执行者的真实身份,认证又称为鉴别、确认。身份认证通过标识和鉴别用户的身份,防止攻击者假冒合法用户来...
  • ShaoqunLiu
  • ShaoqunLiu
  • 2016年08月03日 21:14
  • 1551

Micorsoft.Net中数字签名技术

一、 Internet安全与数字签名 对于 Internet 应用程序的开发人员和用户而言,代码安全是一个主要问题。有下列风险:恶意的代码、被篡改的代码和来自未知站点或作者的代码。为 Internet...
  • qpl007
  • qpl007
  • 2005年08月23日 12:07
  • 888

Java实现数字签名

一、数字签名算法概述    签名认证是对非对称加密技术与数字摘要技术的综合运用,指的是将通信内容的摘要信息使用发送者的私钥进行加密,然后将密文与原文一起传输给信息的接收者,接收者通过发送者的公钥信息来...
  • lovelichao12
  • lovelichao12
  • 2017年07月12日 14:35
  • 2387
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Microsoft.Net中数字签名技术
举报原因:
原因补充:

(最多只允许输入30个字)