使用C#开发ActiveX控件全攻略(2)

第五部分:给安装包签名
     对于 Internet 应用程序的开发人员和用户而言,代码安全是一个主要问题。有下列风险:恶意的代码、被篡改的代码和来自未知站点或作者的代码。 
     Internet 开发时有两种保证安全的基本方法。第一种方法称为“沙箱”。在此方法中,应用程序只能访问一组特定的API,并且被从潜在危险的 API(如文件 I/O,程序可能在此毁坏用户计算机中的数据)中排除。第二种方法使用数字签名来实现。此方法对 Internet 称为“收缩包装”。使用私匙/公匙技术验证和签名代码。在代码运行之前,验证其数字签名,确保该代码的来源是已知的并且经过验证,并且自签名后该代码未被更改过。
    在第一种情形中,信任应用程序不会有任何损害,并且信任该应用程序的来源。在第二种情形中,使用数字签名来验证真伪。数字签名是用于识别和提供关于代码发行者的详细资料的工业标准。其技术基于标准,包括 RSA 和 X.509。浏览器一般允许用户选择是否希望下载并运行来源未知的代码。
    给文件签名首先要获得软件发行证书。为此,必须向证书颁发机构提出请求(比如微软或其他认证代理机构)。在申请期间,必须生成一个密匙对并向证书颁发机构提供标识信息(如名字、地址和公匙)。还必须作出在法律上具有约束力的保证,即保证您不能也不会分发您知道或本应知道含有病毒或将以其他方式恶意损害用户的计算机或代码的软件。当然,这种认证是收费的,一般在2——8KRMB不等。
    这里,我们使用Microsoft.Net带的MAKECERT和CERT2SPC实用工具生成测试的软件发行证书。然后用这个测试证书通过SignTool工具为我们的发行包签名,当然,这对软件发行是无效的,也就是说在Internet环境下还是需要修改IE安全设置才可以下载安装。但是在局域网环境下可以实现直接下载安装,仅可用于测试代码签名。
     MAKECERT.exe、CERT2SPC.exe和SignTool.exe三个工具在C:/Program Files/Microsoft SDKs/Windows/v6.0A/bin 目录下。你可以通过vs2008的“Visual Studio 2008 Command Prompt” 进入命令行状态,这时系统会自动加载对应的Path参数,你在任何一个目录下都可以直接运行着三个小工具了。
    1、用MAKECERT.exe创建用于数字签名的公钥和私钥对
        在命令行下输入“makecert -ss lwchome -n "CN=lwchome CRD公司" -sv d:/test/lwchomecert.pvk -r d:/test/wchomecert.cer”
        其中 ss- 主题的证书存储名称, n- 证书颁发对象,此名称必须符合 X.500 标准。最简单的方法是在双引号中指定此名称,并加上前缀 CN=;例如,"CN=myName"。注意这里的CN必须大写。- r- 证书存储位置, -sv 导出私钥文件(为了签名使用)。注意:这个时候会让输入三次密码,三次要完全一致。
   2、 Cert2Spc.exe 生成 spc 发行者证书: cert2spc d:/test/lwchomecert.cer d:/test/lwchomecert.spc
    3、用SignTool.exe对安装包数字签名
       在命令行下输入“signtool signwizard”,会弹出签名工具界面如下:
    点击下一步,输入安装包的位置:
 
点击下一步,选择“自定义”
点击下一步,从文件选择:
选择刚刚制作的证书 d:/test/lwchomecert.spc,点击下一步:

捕获

选择磁盘上的私密钥文件,选中刚刚生成的私密钥d:/test/lwchomecert.pvk ,然后点击下一步,输入刚刚的密码显示如下界面:

捕获

  选择md5,点击下一步:

捕获

此页无需修改,直接点击下一步:

捕获

输入描述和web位置,点击下一步:

捕获

添加时间戳http://timestamp.verisign.com/scripts/timstamp.dll ,点击下一步:

捕获

完成输入刚刚的密码即可。

这时,鼠标右击安装包文件“setup.exe”,可以查看数字签名信息:

捕获

    如果是正式发行,请从微软或代理机构申请正式证书和密钥,然后用signtool工具加密你的发行包即可。

第六部分:部署

    将签名的setup.exe拷贝到网站目录下,替换之前没有签名的安装包。用iis发布网站,注意“执行权限选择纯脚本”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值