代码签名和安全邮件的使用

     如果你使用IE申请过客户证书,你会注意到在申请证书的页面的Advance Setting中有一项Usage选项,这是X.509数字证书的标准扩展,它指定所申请证书的用途。在这个选项中除了客户验证和服务器验证之外还有E-Mail保护,代码签名和时间戳签名。E-Mail保护用来对电子邮件签名和加密的即用于安全电子邮件S/MIME协议,代码签名是用来对exe,ocx或cab签名的,时间戳签名是用来产生时间戳的。

     安全电子邮件提供邮件的加密和签名,利用公钥算法保证你的签名邮件不会被篡改,而你的加密邮件除了邮件接收者以外(甚至你自己)的任何人无法阅读其中的内容。邮件签名很加密的使用方法相对比较简单,申请一个E-Mail保护证书,在E-Mail一栏中输入你的POP3Mail帐号(不能用基于HTTP的邮件帐号),在安装好证书后打开Outlook Express,在帐号属性中选择“安全”一栏。这里你可以将你的邮件帐号同你的数字证书绑定,需要注意的是,证书中的邮件地址必须同绑定的邮件帐号一致。这样你就可以对自己的邮件签名和加密了。打开邮件编辑界面,在工具栏的最右边有两个按钮,那就是签名和加密按钮。

     对邮件签名使用的是你的私有密钥,在完成邮件后按下该按钮,Outlook会自动以附件方式在邮件中添加一个签名PKCS#7 Signature,在这个签名中同时还包含了你的证书(S/MIME),当别人收到你的邮件后如果他使用的邮件工具支持S/MIME(如Outlook Express和Netscape Messenger)就会自动对邮件的签名进行验证。验证签名需要对证书链进行验证,这就需要已经安装颁发你的S/MIME证书的CA的证书(就是安装Certificate Server时产生的那个证书即根证书),通常别人不会有你的根证书,所以你必须首先将你的根证书发给别人并安装,否则你的签名邮件将无法验证。根证书安装方法同SSL根证书的安装,通常SSL和S/MIME根证书会是同一个,因为CA证书一般是不分用途的,它只有一个用途就是签发证书。

     别人收到你的签名邮件后,通过查看邮件属性可以看到你的证书(包含在你的签名中的),他可以把你的证书添加到地址簿中去,并同地址簿中的邮件地址绑定。这样他就可以你发送加密邮件了,这是因为加密邮件使用的是邮件接收方的公钥即数字证书。加密操作同样只要按一个按钮就可以了。加密邮件的前提是在你的地址簿中有与发送地址绑定的数字证书。

     除了通过邮件发送你的S/MIME证书(不是根证书),你还可以通过文件方式,以PKCS#7证书链方式将证书导出到文件并发给别人,那他就可以通过打开文件将你的证书添加到通讯簿中。此外还有一种情况就是你希望给一个人发一个加密的邮件,但又没有对方的证书,这时就需要一个类似黄页的工具来查询某人的证书,目前主要是通过目录查询来实现的。点击NT/98的开始按钮,选择“查找|用户”菜单,在服务商中选择Verisign,然后在名字一栏中输入Frank然后按查找,双击某个输出结果查看其属性,你会发现这个人的证书,将其添加到通讯簿中后,你就可以给他发送加密邮件了。

     现在来讲一下代码签名,如果你编写一个ActiveX 控件并放在网页中,别人通过Internet下载时通常会出现一个安全警告,提示代码没有签名。在你的Certificate Server安装目录下找到xenroll.cab,并查看其属性,你会发现多了一栏数字签名,这里你可以查看签名验证情况以及相关证书。要给自己的程序签名其实也很简单,Microsoft有一个Authenticode工具专名用来给代码签名,你可以从Microsoft站点下载到,里面有许多工具,但通常你只要用到signcode.exe就够了。首先你需要有一个代码签名证书,然后使用signcode.exe使用过程很方便,基本是wizard方式的,在提示选择使用的签名证书时按“从存储器选择”按钮选择签名证书。你可以选择将所以证书放入签名,也可以不将根证书放入签名,建议不要将根证书放入签名,还是应让用户从你的站点下载根证书,因为带根证书的签名是没有意义的,虽然这会给用户带来一些麻烦(他需要先安装根证书才能正确验证你的签名)。在提示加入时间戳时选择不加入时间戳。完成签名后你可以从文件属性验证其签名和证书。

     时间戳的作用在于证明某一段数据在该时间的存在性。比如你有一个重大发现,希望用它来争取诺贝尔奖,你用Word编写你的论文,但是为了证明你是第一个发现者,你需要证明你写论文的时间,由于文件的时间可任意修改,不能作为证明,所以你需要有一个时间戳,你通过某个Hash算法计算出你的Word文件的摘要并发送给一个权威的时间戳签名服务商(DTS),DTS对摘要和签发时间进行签名形成时间戳发还给你,你将文件时间戳合并,作为将来证明你撰写论文时间的依据。时间戳服务需要很高的权威性,所以对私钥存储,时间来源都有很高的要求。目前这方面应用不多,好象Office 2000似乎支持时间戳功能。

     无论是SSL也好,安全电子邮件也好,代码签名也好都是Netscape最先提出和使用的,在Netscape中使用这些技术,方法都很相似(Microsoft学的还真象),所以这里不再多说了。IE5.0以后,Microsoft的这些技术和产品已经比较成熟,在功能上部分超越了Netscape,但Netscape毕竟是原创,在这方面的文档资料比较全面,讨论组和邮件列表也比较多,所以在技术支持方面会比较好一点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值