ActiveX 部件的数字签名

ActiveX   部件的数字签名  
   
   
  Internet   Explorer   的缺省安全设置要求任何可下载的软件在下载之前必须拥有一个数字签名。数字签名能用于对以下内容进行核实:    
   
  文件的内容。  
   
   
  文件有可靠的来源。    
  签名提供了一种验证文件内容的方法,该方法确保该文件在可用于下载后未被改变过。数字签名通过标识创建软件的合法实体来验证来源。当您在可下载的软件中加入了签名,您就是合法实体。合法实体应该为签名软件被下载时或运行后所造成的损失负责。  
   
  应被签名的软件  
  有五种类型的文件可以使用数字签名:    
   
  .exe   文件  
   
   
  .cab   文件  
   
   
  .dll   文件    
   
   
  .ocx   文件  
   
   
  .vbd   文件    
  如果提供以上类型的文件下载,就应为其设置数字签名。  
   
  注意   通常,只要在部件打包后的   .cab   文件中进行签名就足够了。然而,如果要发行的   .ocx、.exe、.vbd   或   .dll   文件没有打包在   .cab   文件中,就要单独为其进行签名。  
   
  您可以通过向认证机构购买证书来获得数字签名。认证机构是一个确认身份并发行认证证书的公司。证书中包含您的数字签名,是您信用的验证。一旦出现问题,认证机构将成为您身份的见证人。  
   
  公用密钥与私用密钥  
  在使用数字签名时要使用   Authenticode   技术。Authenticode   的目的是通过建立责任制来阻止有害代码的发行。Authenticode   将验证发布代码的发行人的身份给要下载这份代码的   Internet   最终用户。此外,Authenticode   可以为用户确保该代码在签名后未被改动。  
   
  Authenticode   技术来源于公用密钥签名技术。该技术使用了密钥对来加密数据。密钥对用于文件的加密和解密。在公用密钥技术中,公用密钥和私用密钥确保了文件的私有性。公用密钥用于加密数据,而私用密钥则用来解密数据。尽管该技术用于保护诸如电子邮件之类的小文件是很成功的,但是对于大文件,这一过程却是非常消耗时间的。Authenticode   正是这种技术的一种改进形式,专供大文件使用。  
   
  Authenticode   与签名  
  以下是   Authenticode   过程中的一些步骤:    
   
  在开发者对文件签名时,要计算一个哈希数。哈希数表示文件的总字节长度。该数字用私用密钥加密并插入到文件中。然后,开发者将文件进行打包并将其部署到   Web   服务器上。  
   
   
  当用户下载或安装文件时,他们的计算机计算第二个哈希数,并同原先的进行比较。如果数字相同,则文件的内容就得到了验证。  
   
   
  浏览器使用公用密钥来决定您的身份和提供数字签名的认证机构。  
   
   
  认证机构核实开发者的身份,并将包含经私用密钥加密的开发者名字的证书授予开发者。  
   
   
  浏览器使用私用密钥将文件解密。然后进行安装。    
  ActiveX   SDK   中有用于数字签名的   Authenticode   软件工具,用户可以从   Microsoft的   Internet   站点上下载。数字签名必须从发行机构获得,例如   GTE   和   VeriSign   公司。  
   
  详细信息   关于如何下载   ActiveX   SDK   的详细信息请参阅您   MSDN   Library   CD-ROM   上的   Internet   Client   SDK,或   http://www.microsoft.com/workshop/prog/inetsdk/。有关公用和私用加密的详细信息,请在   Internet   上搜索   RSA   或公用密钥签名。  
   
  证书的保护  
  由于您的公司要为所有使用签名的文件负责,而不论签名是否经过授权,所以确保您证书的安全非常重要。您应该将证书保存在发行证书的认证机构中,将文件送去签名。如果将证书保存在自己的站点上,应严格控制其存取权限。  
   
  详细信息   要获得有关安全和数字签名的最新技术资料,请访问   Microsoft   Web   站点http://www.microsoft.com/security   上的   Microsoft   Security   Advisor   表中的   Authenticode   链接。  
   
  如何为代码签名  
  您可以对任何要发行的   .ocx、.exe、.dll、.vbd   或   .cab   文件进行签名。为代码签名主要有两步。首先,必须申请证书,然后再进行签名。  
   
  要为您的代码签名,请按以下步骤执行:    
   
  向认证机构申请证书。请访问http://www.microsoft.com/workshop/prog/security/authcode/certs.htm,以获得有关如何获得证书的指导。  
   
   
  从http://www.microsoft.com/workshop/prog/sdk/   上获取   ActiveX   SDK   的最新版本。其中包含您对代码签名所需要的工具。  
   
   
  准备要签名的文件。如果对.exe、.ocx、.vbd   或.dll   文件签名,您不需要做任何特别的事情。如果对.cab   文件签名,您必须将以下条目添加到   .ddf   文件中,并重新生成.cab   文件:    
  .Set   ReservePerCabinetSize=6144  
   
  使用   ActiveX   SDK   中的工具对文件签名。下面是对文件签名的一个示例:    
  Signcode   -prog   myfilename   -name   displayname   -info   http://www.mycompany.com   -   spc   mycredentials.spc   -pvk   myprivatekey.pvk  
   
  测试签名:    
  要测试一个签了名的.exe、.dll、.vbd   或.ocx   文件,请运行   chktrust   filename    
  filename   是您签了名的文件。  
   
   
  要测试一个签了名的.cab   文件,请运行   chktrust   -c   cabfilename.cab  
  cabfilename   是您签了名的   .cab   文件。    
  如果签名成功,以上任何一步测试都会显示证书。 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activex控件签名工具, 微软提供了两套签名工具, 1)signcode.exe, 从1998年开始使用,随.NET Framework SDK发布。 signcode.exe 数字签名工具 makecert.exe 创建数字证书 cert2spc.exe 将数字证书转化为软件发布者证书格式 2)signtool.exe,随visualstudio 2005及其以后的版本发布。 signtool.exe 数字签名工具 makecert.exe 创建数字证书 cert2spc.exe 将数字证书转化为软件发布者证书格式 pvk2pfx.exe(pvkimprt.exe) 将私有的密匙和软件发布者证书合并为pfx文件,此文件将被signtool.exe使用 上面2中工具的不同是signcode.exe需要输入私有密匙和软件发布者证书(pvk和spc文件),signtool.exe只需要输入由pvk和spc合并产生的一个个人信息交互文件(pfx)。 获得数字证书 数字证书,你可以创建自己的数字证书来测试数字签名的流程,但是正式的软件发布,你需要向可信赖的证书颁发机构购买数字证书和密码,例如你可以向以下的证书机构购买Comodo, Globalsign, Thawte and Verisign。 创建自己的数字证书(用来测试) 使用如下命令来创建自己的数字证书: makecert.exe -sv mykey.pvk -n "CN=Acme Software Inc." mycert.cer你可以将Acme Software Inc.替换为你自己公司的名字。如果mykey.pvk不存在的话,你会要求输入私有密匙的密码,密码可以为空。安全起见最好设置密码,否则别人拿到你的私有密匙后就可以签名了。在上面的命令后,产生了2个文件mykey.pvk和mycert.cer。接下来需要将数字证书(cer)转化为软件发布商证书(spc),命令如下:cert2spc.exe mycert.cer mycert.spc此过程中需要输入私有密匙的密码,创建完成后应该会生成mycert.spc文件,当数字签名时mycert.cer文件是不需要的。 时间戳服务器,你可以选择下列之一, - http://timestamp.verisign.com/scripts/timstamp.dll - http://timestamp.globalsign.com/scripts/timstamp.dll - http://timestamp.comodoca.com/authenticode 1)使用signcode.exe,如下: signcode.exe -t <timestamp URL> -spc mycert.spc -v mykey.pvk "<file to be signed>"进行数字签名的文件可以是.exe, .dll, .ocx 或者是其他的可执行文件。 2)使用signtool.exe,如下: 如果你没有pfx文件,需要使用以下的命令来将pvk和spc文件合并为pfx,如果没有设置密码的话必须使用pvkimprt.exe来合并。pvk2pfx.exe -pvk mykey.pvk -pi <password> -spc mycert.spc -pfx mycert.pfx -po <password>pvkimprt.exe -pfx mycert.spc mycert.pvksigntool.exe sign /f mycert.pfx /p <password> /t <timestamp URL> /v "<file to be signed>" 以下是使用signtool.exe签名的一个实例: signtool.exe sign /f mycert.pfx /p <password> /t <timestamp URL> /v "<file to be signed>"

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值