概 述:本文以Microsoft.Net中创建签名的CAB文件为例,说明如何创建签名文件,从而使你的代码能够安全的在INTERNET上公布。希望能起到抛转引玉的作用。

keyword:数字签名,ActiveX。CAB

一、 Internet安全与数字签名

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

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

为 Internet 开发时有两种保证安全的基本方法。第一种方法称为“沙箱”。在此方法中。应用程序仅仅能訪问一组特定的API,而且被从潜在危急的 API(如文件 I/O。程序可能在此毁坏用户计算机中的数据)中排除。另外一种方法使用数字签名来实现。

此方法对 Internet 称为“收缩包装”。使用私匙/公匙技术验证和签名代码。在代码执行之前,验证其数字签名,确保该代码的来源是已知的而且经过验证,而且自签名后该代码未被更改过。

在第一种情形中,信任应用程序不会有不论什么损害,而且信任该应用程序的来源。

在另外一种情形中。使用数字签名来验证真伪。数字签名是用于识别和提供关于代码发行者的具体资料的工业标准。其技术基于标准,包含 RSA 和 X.509。浏览器一般同意用户选择是否希望下载并执行来源未知的代码。

本文主要讨论第二中情形“数字签名”。

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

在本文的样例中,使用Microsoft.Net带的MAKECERT和CERT2SPC有用工具生成測试的软件发行证书。

当然,对软件发行是无效的,仅可用于測试代码签名。

二、 创建签名的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,按例如以下图示操作。

在c:\创建whx.CAB 文件。

也可不使用 CAB 文件而直接签名 DLL 和 OCX。CAB 文件的优势在于压缩。并且假设与 INF 文件一起使用。它可将全部必要的代码绑定在一起。

3、 签署文件

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

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

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

能够查看文件的属性。查看数字签名。

Microsoft.Net中数字签名技术的更多相关文章

  1. Delphi 中DataSnap技术网摘

    Delphi2010中DataSnap技术网摘 一.为DataSnap系统服务程序添加描述 这几天一直在研究Delphi 2010的DataSnap,感觉功能真是很强大,现在足有理由证明Delphi7 ...

  2. 数字签名技术与https

    1,非对称加密技术 非对称加密算法需要两个密钥,公开密钥(publickey)和私有密钥(privatekey):公钥和私钥是成对出现的. 非对称加密例子:B想把一段信息传给A,步骤:1)A把公钥传给 ...

  3. Microsoft SDK 中Sample案例之Amcap項目 的运行方法(转)

    http://blog.csdn.net/erick08/article/details/7194575 Microsoft  SDK 中Sample之Amcap 的运行方法      写这篇文章的由 ...

  4. php中CURL技术模拟登陆抓取数据实战,抓取某校教务处学生成绩。

    这两天有基友要php中curl抓取教务处成绩的源码,用于微信公众平台的开发.下面笔者只好忍痛割爱了.php中CURL技术模拟登陆抓取数据实战,抓取沈阳工学院教务处学生成绩. 首先,教务处登录需要验证码 ...

  5. 如何修复在Microsoft Azure中“虚拟机防火墙打开,关闭RDP的连接端口”问题

     注:下列步骤并不一定适用所有场景,提供思路,请灵活应用 我们在使用Microsoft Azure 中Windows 虚拟机,有时会发生错误打开防火墙或一些管家软件错误的关闭了"远程桌面 ...

  6. 转:LoadRunner中参数化技术详解

    LoadRunner中参数化技术详解 LoadRunner在录制脚本的时候,只是忠实的记录了所有从客户端发送到服务器的数据,而在进行性能测试的时候,为了更接近真实的模拟现实应用,对于某些信息需要每次提 ...

  7. 命名空间“Microsoft.AspNet”中不存在类型或命名空间名“Mvc”

    问题: 错误 CS0234 命名空间"Microsoft.AspNet"中不存在类型或命名空间名"Mvc"(是否缺少程序集引用?) 解决方案: 打开文件夹 Us ...

  8. 谈谈书本《c#物联网程序设计基础》中的技术瑕疵,如果你将要读本书,请进来看看!

    今天去书店看到一本名为<c#物联网程序设计基础>的书,对物联网感兴趣的我抓起来就看,书中的项目都是上位机开发项目,较简单,如果物联网开发只是这样,看起来我做物联网开发也是绰绰有余.这边书我 ...

  9. 系统重装助手教你如何在Microsoft Edge中恢复“关闭所有选项卡”警告

    在Microsoft Edge中,当您打开多个选项卡时,浏览器将显示“您要关闭所有选项卡吗?” 警告,以防止您意外关闭重要标签. 通常,在没有第二个想法的情况下,您会立即禁用此功能,检查提示中的“始终 ...

随机推荐

  1. USB Type-C 连接器规范推出之后,市场很多低质量线材容易损坏设备

    USB Type-C 连接器规范推出之后,已有不少行动装置产品使用,其中最知名的产品为 Apple MacBook,机身仅提供一组 Type-C 端口,同时兼具充电与数据传输之用.市面上第三方厂商也开 ...

  2. 【HDOJ】2430 Beans

    这题目用线段树超时了,其实也差不多应该超时.10^6大数据量.看了一下网上的解法是单调队列.大概了解了一下,是个挺有意思的数据结构.首先,需要求满足0<=(S[r]-S[l])%p<=k时 ...

  3. 免安装oracle驱动访问数据库

    try { string connStr = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.110.110)( ...

  4. Apache Struts ClassLoader操作漏洞

    漏洞版本: Apache Struts 2.x 漏洞描述: CVE ID:CVE-2014-0094 Struts2 是第二代基于Model-View-Controller (MVC)模型的java企 ...

  5. Oracle MySQL Server 安全漏洞

    漏洞名称: Oracle MySQL Server 安全漏洞 CNNVD编号: CNNVD-201401-317 发布时间: 2014-01-22 更新时间: 2014-01-22 危害等级: 中危  ...

  6. 普通pc电脑安装苹果系统mac_详细教程(精)附带所有工具下载

    苹果操作系统只允许在苹果电脑上面安装和使用.和Windows不一样,要在PC上安装,需要一系列的模拟和破解.破解安装的过程很繁琐而具有挑战性,以下是安装10A432雪豹的PC安装指南,附带25张图片帮 ...

  7. 理解SVG坐标系统和变换: 建立新视窗

    在SVG绘制的任何一个时刻,你可以通过嵌套<svg>或者使用例如<symbol>的元素来建立新的viewport和用户坐标系.在这篇文章中,我们将看一下我们如何这样做,以及这样 ...

  8. import project后,出现Unable to get system library for the project

    import project 后,出现Unable to get system library for the project. 这是因为在import 一个项目的时候,没有指定android sdk ...

  9. 【原】SparkContex源码解读(一)

    版权声明:本文为原创文章,未经允许不得转载. SparkContext(简称sc)是Spark程序的主入口,代表一个连接到Spark集群(Standalone.YARN.Mesos三种集群部署模式)的 ...

  10. SSAS数据挖掘算法简介

    决策树分析算法:以二叉树的形式展现,分析出影响某种行为(如购买自行车)的因素,并对这些因素排序. 聚类分析算法:物以类聚,人以群分.分析特定群体所共同含有的属性(因素). 未完,待续..