Internet 开发时有两种保证安全的基本方法。第一种方法称为“沙箱”。在此方法中,应用程序只能访问一组特定的API,并且被从潜在危险的 API(如文件 I/O,程序可能在此毁坏用户计算机中的数据)中排除。第二种方法使用数字签名来实现。此方法对 Internet 称为“收缩包装”。使用私匙/公匙技术验证和签名代码。在代码运行之前,验证其数字签名,确保该代码的来源是已知的并且经过验证,并且自签名后该代码未被更改过。
在第一种情形中,信任应用程序不会有任何损害,并且信任该应用程序的来源。在第二种情形中,使用数字签名来验证真伪。数字签名是用于识别和提供关于代码发行者的详细资料的工业标准。其技术基于标准,包括 RSA 和 X.509。浏览器一般允许用户选择是否希望下载并运行来源未知的代码。
给文件签名首先要获得软件发行证书。为此,必须向证书颁发机构提出请求(比如微软或其他认证代理机构)。在申请期间,必须生成一个密匙对并向证书颁发机构提供标识信息(如名字、地址和公匙)。还必须作出在法律上具有约束力的保证,即保证您不能也不会分发您知道或本应知道含有病毒或将以其他方式恶意损害用户的计算机或代码的软件。当然,这种认证是收费的,一般在2——8KRMB不等。
这里,我们使用Microsoft.Net带的MAKECERT和CERT2SPC实用工具生成测试的软件发行证书。然后用这个测试证书通过SignTool工具为我们的发行包签名,当然,这对软件发行是无效的,也就是说在Internet环境下还是需要修改IE安全设置才可以下载安装。但是在局域网环境下可以实现直接下载安装,仅可用于测试代码签名。
选择磁盘上的私密钥文件,选中刚刚生成的私密钥d:/test/lwchomecert.pvk ,然后点击下一步,输入刚刚的密码显示如下界面:
选择md5,点击下一步:
此页无需修改,直接点击下一步:
输入描述和web位置,点击下一步:
添加时间戳http://timestamp.verisign.com/scripts/timstamp.dll ,点击下一步:
完成输入刚刚的密码即可。
这时,鼠标右击安装包文件“setup.exe”,可以查看数字签名信息:
如果是正式发行,请从微软或代理机构申请正式证书和密钥,然后用signtool工具加密你的发行包即可。
第六部分:部署
将签名的setup.exe拷贝到网站目录下,替换之前没有签名的安装包。用iis发布网站,注意“执行权限选择纯脚本”