• 本栏目热门文章
  • 本栏目最新文章
选择字体:< >
打印本页打印本页
  • 数字证书使用一点通
  • 时间:2005-03-11 06:56 AM 来源:天极网 作者阅读:
  现在,网络欺诈事件层出不穷,通过网络交易损失上万元,或者影响个人职业生涯的案例,早已在国内发生了。比如曾经有9位通过网络炒股的股民在“银广夏”复牌“跳水”时期,被莫名其妙地盗卖而后又盗买了大量股票,总损失超过12万元!也就是说,如果要冒充股民实施盗买盗卖,只需要知道他们的密码就可以。再比如,北京某高校一女生,历尽千辛万苦,考上了美国一家著名大学,并收到了录取通知书,不料,她的一个同学竟然冒她之名,向对方学校发送了一封“放弃入学”的Email,等她发现,对方的录取工作已经结束,留学之路严重受挫!类似的事件还有很多,我们发现,通过密码或其他手段来冒充时,这些事件都可能会成立,于是,人们在网络上的身份安全问题接踵而来。  

  实际上,通过使用数字证书,这些损失是完全可以避免的。在招商银行http://www.cmbchina.com申请专业个人银行的时候,很多朋友都接触了数字证书。作为一种比较成熟的安全产品,数字证书已经发展到一个较高的技术水平,而且它将在我们将来的网络生活中发挥越来越重要的作用。那么,数字证书能做什么呢?它和网络安全到底有什么关系呢?如何使用数字证书来进行一些具体的操作呢?本文将通过详细而生动的演示,让读者轻松拥有免费数字证书,同时,针对数字证书的具体应用如利用数字证书对邮件和word文档的签名、加密等,让读者对数字证书的操作有一个比较全面和直观的认识。

本文主要内容
一、揭开数字证书的神秘面纱
 1. 什么是数字证书
 2. 获得及安装免费数字证书
 3. 在IE中查看数字证书
二、电子邮件与数字证书
 1. 在Outlook Express中设定邮件
 2. Outlook Express中设置邮箱与数字证书的绑定
 3. 发送签名的电子邮件
三、网站服务器与数字证书
 1. http与https的相关知识
 2. 申请服务器证书
 3. 获得服务器证书和安装服务器证书
 4. 服务器证书的设置和服务器的访问
四、利用数字证书进行代码签名

  一、揭开数字证书的神秘面纱

  1. 什么是数字证书

  数字证书称为数字标识 (Digital Certificate ,Digital ID)。它提供了一种在 Internet 上身份验证的方式,是用来标志和证明网络通信双方身份的数字信息文件,与司机驾照或日常生活中的身份证相似。数字证书它是由一个由权威机构即CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在交往中用它来识别对方的身份。在网上进行电子商务活动时,交易双方需要使用数字证书来表明自己的身份,并使用数字证书来进行有关交易操作。通俗地讲,数字证书就是个人或单位在 Internet上的身份证。

  比较专业的数字证书定义是,数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循相关国际标准。有了数字证书,我们在网络上就可以畅通无阻。如图1是一个数字证书在网络应用中的原理图。



图 1

  为什么需要数字证书呢?如本文开头所举的例子,由于Internet网电子商务系统技术使在网上购物的顾客能够极其方便轻松地获得商家和企业的信息,但同时也增加了对某些敏感或有价值的数据被滥用的风险。买方和卖方都必须对于在因特网上进行的一切金融交易运作都是真实可靠的,并且要使顾客、商家和企业等交易各方都具有绝对的信心,因而网络电子商务系统必须保证具有十分可靠的安全保密技术,也就是说,必须保证网络安全的四大要素,即信息传输的保密性、数据交换的完整性、发送信息的不可否认性、交易者身份的确定性。

  2. 获得及安装免费数字证书

  通过使用免费数字证书,我们可以了解专业数字证书的相关技术。获得免费数字证书的方法有很多,目前国内有很多CA中心提供试用型数字证书,其申请过程在网上即时完成,并可以免费使用。下面提供一个比较好的站点,申请地址为https://testca.netca.net/。登陆后,点击“证书申请”,选择“试用型个人数字证书申请”,特别强调,注意只有安装了根证书(证书链)的计算机,才能完成后面的申请步骤和正常使用读者在CA中心申请的数字证书。

  按照提示,通过地址https://testca.netca.net/download/GetRootCertificateIndi.asp选择“安装试用CA证书链”。安装成功出现提示框后,可以看到一个表单。

  按照表单上的提示,输入完整的个人资料。选择加密服务提供程序(Cryptographic Service Provider,CSP),其中,CSP 负责创建密钥、吊销密钥,以及使用密钥执行各种加、解密操作。每个 CSP 都提供了不同的实现方式。某些提供了更强大的加密算法,而另一些则包含硬件组件,例如智能 IC 卡或 USB 电子令牌。 当读者使用特别的数字证书存储介质(如:智能 IC 卡或 USB 电子令牌)存储数字证书及其相应的私有密钥时,可以在“加密服务提供程序(CSP)”下拉框中选择该存储介质生产厂商提供的CSP。我们可以选择“Microsoft Base Cryptagraphic Provider V1.0”。

  补充信息可以选填:有效证件类型,证件号码,读者的出生日期,读者的性别, 读者的住址,通信地址,通信所在地邮政编码,联系电话,传真号码,存储介质等。然后点击按钮提交。

  下载证书。进行上述步骤后,系统将发一封申请成功的信件到读者申请时使用的邮箱内,其中包括业务受理号和密码, 数字证书下载的地址。点击数字证书下载地址,填写业务受理号和密码。

  提交后,可以得到如图2所示的信息。



图 2

  然后点击下方的“安装证书”按钮,当系统提示“证书成功下载”和“证书已成功装入应用程序中”后,表明读者的证书已经成功安装。

  3. 在IE中查看数字证书

  现在很多读者朋友可能要问了,数字证书在哪里呢?其实,微软的IE浏览器自带一个数字证书管理器,通过这个管理器我们可以查看数字证书。

  首先在打开Internet Explorer,在Internet Explorer的菜单上,单击 “工具”菜单中的 “Internet选项”。选取“内容”选项卡,点击“证书”按钮来查看读者信任的当前证书的列表。

  点击“个人”选项卡可以查看读者已经申请的个人数字证书;下面是申请的免费数字证书,读者朋友可以参考。如图3所示。



图 3

  选定读者要查看的个人数字证书,然后单击 “查看” 按钮,可以查看证书的详细信息。如图4是一个数字证书的详细信息列表。



图 4

  下面就是在证书中所包含的元素的列表,读者朋友可以根据自己的体会进行理解。

  版本:它用来区别X.509的各种连续的版本。默认值是1988版本。
  序列号:序列号是一个整数值,在发行的证书颁发机构中是唯一的。序列号与证书有明确联系,就像身份证号码和公民日常登记有明确联系一样。
  算法识别符:算法识别符识别证书颁发机构用来签署证书的算法。证书颁发机构使用它的私钥对每个证书进行签名。
  发行者或证书颁发机构:证书颁发机构是创建这个证书的机构。
  有效期:提供证书有效的起止日期,类似于信用卡的期限。
  主体:证书对他的身份进行验证。
  公钥信息:为证书识别的主体提供公钥和算法识别符。
  签名:证书签名覆盖了证书的所有其他字段。签名是其他字段的哈希代码,使用证书颁发机构的私钥进行加密,保证整个证书中信息的完整性。如果有人使用了证书颁发机构的公钥来解密这个哈希代码,同时计算了证书的哈希代码,而两者并不相同,那么证书的某一部分就肯定被非法更改了。

  有了数字证书以后,我们可以进行发送安全的电子邮件,实现网上邮件的加密和签名电子邮件,它还可以应用于公众网络上的商务活动和行政作业活动,应用范围涉及需要身份认证及数据安全的各个行业,如访问安全站点、网上招标投标、网上签约、网上订购、安全网上公文传送、网上办公、网上缴费、网上缴税、网上购物等网上的安全电子事务处理和安全电子交易活动等。随着电子商务和电子政务的不断发展,数字证书的颁发机构CA中心将作为一种基础设施为电子商务的发展提供可靠的保障。所以,网络发展的越快,人们对网络安全的要求也越来越高,了解数字证书并学会一些数字证书的操作将有利于我们更加安全的在网上冲浪。

  二、电子邮件与数字证书

  安全电子邮件证书中包含证书持有者的电子邮件地址、公钥及CA中心的签名。使用安全电子邮件证书可以收发加密和数字签名邮件,保证电子邮件传输中的机密性、完整性和不可否认性,确保电子邮件通信各方身份的真实性。证书可以存贮在硬盘、USB中。安全电子邮件利用公钥算法保证你的签名邮件不会被篡改,而你的加密邮件除了邮件接收者以外(甚至你自己)的任何人无法阅读其中的内容。需要注意的是,证书中的邮件地址必须同绑定的邮件帐号一致。这样就可以对自己的邮件签名和加密了。

  下面,通过一个存储在硬盘中的数字证书进行相关操作的演示。

  1. 在Outlook Express中设定邮件

  首先,打开Outlook Express,然后选择菜单中的“工具”菜单中的“帐户”选项,出现“Internet帐户”对话框,我们点击右边的“添加”按钮,选择“邮件”选项,如图5所示。



图 5

  输入读者的邮件显示姓名,如“彭文波”;点击“下一步” ,输入读者的电子邮件地址(如pwb2000@163.net);点击“下一步” ,系统让读者分别输入接收邮件服务器和发送邮件服务器的域名或IP地址,如本例为:163.net,smtp.163.net;关于163的邮件设置,我们可以参考www.163.net 的站点邮件设置帮助文件。如图6所示。



图 6

  继续点击“下一步”,系统让读者输入登录到邮箱的账号和密码,如果是163帐户,建议读者勾选“使用安全密码验证”。继续点击 “下一步”,可以看到成功设置了一个新的帐户。

  2. Outlook Express中设置邮箱与数字证书的绑定

  在Outlook Express6.0单击菜单中的“工具”,选择“账号”,选取“邮件” 选项卡中的用于发送安全电子邮件的邮件账号,即刚才建立的账号“彭文波”,然后单击“属性”。如图7所示。



图 7

  选择上面的“安全”标签,可以看到 “签署证书”和“加密首选项”两栏。通过相关设置,我们可以进行邮件的签署和加密。如图8所示。



图 8

  继续上图的设置,我们在“签名证书”项后,点击“选择”按钮。可以看到我们在https://testca.netca.net/上面申请的证书。选择读者的数字证书,点击“确定”完成邮箱与证书的绑定,读者也可以点击“查看证书”,了解自己证书的详细信息。

  注意:如果点击“选择”按钮,没有相关的证书弹出来,请确认读者的证书已经正确安装且没有过期。同时要确认读者在Outlook Express中所设置的邮箱与读者在申请数字证书时所提供的邮箱一致。查看读者在申请数字证书时所提供的邮箱方法:在Internet Explorer中,依次点击“工具”中的“Internet选项”,选择“内容”选项卡中的“证书”,选中读者的数字证书,点击“查看”,找到“详细信息”中的“主题”,读者就可以看到邮箱。

  按照同样的方法,读者也可以在“加密首选项”中把读者自己的证书选中。如图9所示。



图 9

  点击确定。就可以准备发送加密电子邮件了。

  3. 发送签名的电子邮件

  发送加密邮件前必须先获得接收方的数字标识,读者可以首先让接收方给读者发一份签名邮件来获取对方的数字标识或者直接到电子商务安全认证中心的的网站如http://www.cnca.net的站点上面去查询下载来获取对方的数字标识

  我们启动Outlook Express6.0,点击“新邮件”,撰写新邮件。同时我们选中右上方的“签名”或者“加密”选项。如图10所示。



图 10

  发送签名电子邮件

  点击“发送”,签名邮件发送成功。当收件人收到并打开有数字签名的邮件时,将看到 数字签名邮件 的提示信息,按“继续”按钮后,才可阅读到该邮件的内容。如图11所示。



图 11

  接收签名电子邮件

  若邮件在传输过程中被他人篡改或发信人的数字证书有问题,将出现“安全警告”提示。收到邮件后,我们可以看到,邮件的右边中间有一个小图标,点击它,可以看到相关的数字证书信息,包括把查看他的相关信息、把发信人的数字证书添加到自己的通讯簿。如图12所示。



图 12

  发送加密邮件的方法与发送签名邮件的方法类似,收取电子邮件实际上就是一个解密的过程,算法已经隐藏在后台运行了。通过这些具体的操作,我们对加密和解密也有了更加深刻的认识。

  三、网站服务器与数字证书

  由于Windows NT系统的容易维护,很多单位或者ISP都采用它,大部分是做WEB服务器使用。虽然IIS存在很多新的漏洞和安全问题,但只要我们做好合理的安全配置,还是可以避免很多安全隐患的。因此,本文选择IIS服务器来测试数字证书。

  1. http与https的相关知识

  简单的说默认情况下我们所使用的HTTP协议是没有任何加密措施的,所有的消息全部都是以明文形式在网络上传送的,恶意的攻击者可以通过安装监听程序来获得我们和服务器之间的通讯内容。这点危害在一些企业内部网络中尤其比较大,对于使用HUB的企业内网来说简直就是没有任何安全可讲因为任何人都可以在一台电脑上看到其他人在网络中的活动,对于使用交换机来组网的网络来说虽然安全威胁性要小很多,但很多时候还是会有安全突破口,比如没有更改交换机的默认用户和口令,被人上去把自己的网络接口设置为侦听口,依然可以监视整个网络的所有活动。

  除了匿名访问、基本验证和Windows NT请求/响应方式外,还有一种安全性更高的认证,就是通过SSL(Security Socket Layer)安全机制使用数字证书。建立了SSL安全机制后,只有SSL允许的客户才能与SSL允许的Web站点进行通信,并且在使用URL资源定位器时,输入https://,而不是http://。SSL(加密套接字协议层)位于HTTP层和TCP层之间,建立用户与服务器之间的加密通信,确保所传递信息的安全性。SSL是工作在公共密钥和私人密钥基础上的,任何用户都可以获得公共密钥来加密数据,但解密数据必须要通过相应的私人密钥。使用SSL安全机制时,首先客户端与服务器建立连接,服务器把它的数字证书与公共密钥一并发送给客户端,客户端随机生成会话密钥,用从服务器得到的公共密钥对会话密钥进行加密,并把会话密钥在网络上传递给服务器,而会话密钥只有在服务器端用私人密钥才能解密,这样,客户端和服务器端就建立了一个惟一的安全通道。

  2. 申请服务器证书

  首先,在Windows2000中打开Internet信息服务管理器,然后打开要为之申请证书的站点的属性。以笔者的机器为例,选择“默认web站点”,点击右键,在弹出的菜单中选择“属性”,出现属性对话框。找到“目录安全性”对话框。如果以前从未用过这项,“编辑”显示为灰色。如图13所示。



图 13

  选择“服务器证书”按钮,根据服务器证书的状态,选择“下一步”。在出现的选项中,选择“创建一个新证书”。现在可以准备证书请求了。点击“下一步”。在这一步,要选择私钥的长度,建议选能力范围内能选的最大值。如图14所示。



图 14

  如果我们已经产生了一对密钥。私钥将存储在机器上。这些信息将显示在证书上,并将说明这个密钥的所有者。接着输入组织信息和公钥信息。然后输入公用名称。注意“公用名称”是用来区分不同证书的最好方法。在SSL服务器证书的情况下,一般输入主机的域名,比如www.cndes.net即可。如图15所示。



图 15

  接着输入地理信息。选择存储证书请求的文件,选择一个容易找到的位置,用写字板打开这个文件,拷贝并粘贴在我们的申请页面的“证书请求”一栏中。 一旦请求被提交,将不再需要这个文件。最后产生申请的摘要信息,点击“下一步”,完成申请步骤。如图16所示。



图 16

  当证书请求产生之后,会被保存为一个使用默认文件名(如certreq.txt)或您指定文件名的文本文件,存储在服务器的硬盘上。使用 NotePad 或其他 ASCII 文本编辑器打开证书请求文件,可以查看证书请求的内容。注意,不能用Word或其他文字处理软件打开证书请求文件,因为这些软件会在证书请求文件中插入格式控制符。

  3. 获得服务器证书和安装服务器证书

  获得服务器证书的方法和本文中获得个人数字证书的方法有点类似。需要注意的是,要保存好刚才的申请文件,在申请的过程中需要使用到这个文件,而且这个文件只能使用一次,而且在申请的时候一定要把证书请求复制到文本框,具体可以登陆https://testca.netca.net/apply_srv/srv_root.asp这个站点按照上面的提示进行,最后应该下载到一个后缀名为.cer的服务器证书文件。本例中,根据产生的受理号和密码,可以下载一个server.cer文件。

  安装证书的时候,在Windows2000中打开Internet信息服务管理器,然后打开要为之申请证书的站点的属性。还是选择“目录安全性”,选择“服务器证书”,现在我们发现,服务器已经挂起了一个证书请求。根据证书向导,处理挂起的请求并安装证书。如图17所示。



图 17

  点击“下一步”,输入刚才申请到的server.cer文件的路径和名称。继续“下一步”,可以得到摘要信息。如图18所示。



图 18

  单击“下一步”,完成服务器证书的安装。

  4. 服务器证书的设置和服务器的访问

  在Windows2000中打开Internet信息服务管理器,然后打开要为之申请证书的站点的属性。选择“目录安全性”,选择“服务器证书”,我们发现,现在下方的三个按钮都能够使用了。如图19所示。



图 19

  选择“编辑”按钮,就可以对访问用户进行控制了。如图20所示。



图 20

  看到这里,读者朋友应该可以明白为什么我们可以访问https://www.cnca.net的原因了吧。事实上,国内商家的网上交易很多就是在这个安全隧道里面进行的。有了这个安全保证,我们就可以在网上放心的购物了。

  四、利用数字证书进行代码签名

  当你在店铺里购买软件时,软件的来源很清楚,你可以分辨软件的提供商;同时,凭借软件的封装,你可以看到软件有没有被拆封过。籍此,人们可以决定对软件的信任程度。但是,当软件放到了Internet上,你在下载时,还能有足够的信心吗?在计算机病毒横行的今天,也许,你正在下载的杀毒软件恰是一个病毒程序,这样的事情一点也不奇怪,那么,我们在网上怎么信任那些exe文件呢?

  任何软件提供商要想通过网络来发布代码或程序,都会面临着软件被仿冒和篡改的风险。通过数字证书使用代码签名技术就可以有效地防范这些风险。代码签名证书是CA中心签发给软件提供商的数字证书,包含软件提供商的身份信息、公钥及签名。软件提供商使用代码签名证书对软件进行签名后放到Internet上,当用户在Internet上下载该软件时,将会得到提示,从而可以确信软件的来源和软件自签名后到下载前没有遭到修改或破坏。

  对于用户来说,使用代码签名证书可以清楚了解软件的来源和可靠性,增强了用户使用Internet获取软件的决心。万一用户下载的是有害软件,也可以根据证书追踪到软件的来源。对于软件提供商来说,使用代码签名证书,其软件产品更难以被仿造和篡改,增强了软件提供商与用户间的信任度和软件商的信誉。

  如果你编写一个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毕竟是原创,在这方面的文档资料比较全面,讨论组和邮件列表也比较多,所以在技术支持方面会比较好一点。目前,代码签名证书可以对32-bit .exe、.cab、.ocx、.class等程序和文件进行签名。

  数字证书在网络安全中的使用还有很多,比如软件的版权签名、通过专门的数字签名软件给文档盖“公章”、进行网络站点的安全访问等,掌握这些知识将对我们今后的学习和工作产生很大的影响。毫无疑问,这将逐渐成为一种网络安全趋势,没有这些身份认证,我们在网络上将寸步难行,读者朋友可以在今后的学习和使用中多多体会。

责任编辑:tamiyaz