.NET数字证书

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

关键字:数字签名,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文件签名。可以查看文件的属性,查看数字签名。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: .NET证书加签验签是指使用.NET框架的相关类库来进行数字证书的加密和验证操作。在加签过程中,首先需要获取证书的私钥,然后使用私钥对要加密的数据进行签名,生成签名后的数据。生成的签名数据可以与原始数据一起传输给接收方。 在验签过程中,接收方需要获取证书的公钥,并使用公钥对接收到的签名数据进行验证。验证过程会对签名数据和原始数据进行比对,如果两者一致,则验证通过,否则验证失败。 .NET提供了一些类库来处理证书的加签验签操作,主要包括X509Certificate2类和RSACryptoServiceProvider类。通过X509Certificate2类可以获得证书的私钥和公钥,RSACryptoServiceProvider类可以使用私钥进行签名操作,使用公钥进行验证操作。 在进行加签操作时,可以使用RSACryptoServiceProvider的SignData方法对数据进行签名,并指定签名算法和哈希算法。生成的签名数据可以存储为字节数组或Base64字符串,用于传输。 在进行验签操作时,可以使用RSACryptoServiceProvider的VerifyData方法对接收到的签名数据和原始数据进行验证。验证结果会返回一个布尔值,表示验证成功或失败。 总之,使用.NET进行证书的加签验签操作,可以确保数据的完整性和安全性,提供一种可靠的数据传输和验证机制。 ### 回答2: .NET证书加签验签是指使用.NET框架提供的相关功能对证书进行操作,包括加签和验签两个过程。 加签是指使用私钥对某个消息进行加密,生成数字签名,以证明该消息的来源和完整性。首先,我们需要获取私钥所在的证书,并通过.NET中的CryptoAPI类库获取相关的私钥信息。然后,使用私钥对消息进行加密操作,生成数字签名。加签过程中,一般还涉及到对消息进行哈希运算以确保消息的完整性。 验签是指使用公钥对收到的数字签名和消息进行解密和验证,以确认消息的来源和完整性。验签的过程中,我们需要获取公钥所在的证书,并通过.NET中的CryptoAPI类库获取相关的公钥信息。然后,使用公钥对数字签名进行解密操作,得到原始消息。接下来,对原始消息进行哈希运算,再与接收到的数字签名进行对比,如果完全一致,则可以确认消息的来源和完整性。 在.NET框架中,我们可以使用System.Security.Cryptography命名空间下的相关类实现证书加签验签的功能。具体而言,可以使用RSACryptoServiceProvider类操作证书私钥和公钥,通过调用它的SignData方法进行加签操作,调用VerifyData方法进行验签操作。同时,还需要了解证书的获取、存储和管理等相关知识,比如使用X509Certificate2类获取证书信息。 总之,通过.NET框架提供的相关功能,我们可以方便地实现证书的加签验签操作,以确保消息的可靠性和完整性。 ### 回答3: 在.NET框架中,证书加签和验签是一种常见的数据完整性和安全性保障机制。它基于公钥基础设施(PKI)体系,其中使用了数字证书对数据进行加密和验证。 在进行证书加签过程中,首先需要获取有效证书。我们可以通过在Windows证书存储中查找和选择合适的证书来完成此操作。然后,需要使用私钥对待加签的数据进行签名。在.NET中,可以使用Cryptography命名空间下的相关类(如RSACryptoServiceProvider)来实现这一步骤。签名过程使用私钥对数据进行哈希运算,然后将哈希值使用私钥进行加密,生成数字签名。最后,将数字签名与原始数据一起发送给接收方。 在证书验签过程中,接收方首先需要获取证书的公钥。然后,需要使用公钥对数字签名进行解密,得到签名的哈希值。接下来,接收方对原始数据进行哈希运算,与解密得到的哈希值进行比较。如果二者相等,则表明数据的完整性和真实性得到验证,否则证明数据可能被篡改或伪造。 在.NET中,可以使用Cryptography命名空间下的相关类(如RSACryptoServiceProvider)来实现对数字签名进行解密和数据的哈希运算。在验证过程中,还可以通过对比证书的有效期、证书颁发者等信息来进一步确认证书的可信度。 总结而言,.NET框架提供了一套完善的API和类库,可以方便地实现证书加签和验签操作。通过正确使用证书,可以保障数据的完整性和安全性,确保数据在传输和存储过程中不被篡改或伪造。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值