为便于大家掌握,以下介绍采用最简单的工作环境(见图1),即:Web服务器Windows2000AdvancedServer作为操作系统;认证中心则在此基础上增加了“证书颁发机构”组件,IP地址为10.15.11.13,证书颁发策略为“立即颁发”;浏览器用IE4.0或IE5.0,服务器放在Intranet上,通过网络颁发数字证书。假设要实现安全Web的站点名为默认站点Myweb.
一、数字证书的取得与管理
(一)生成申请Web站点数字证书的文件
本操作在Web服务器端进行。具体步骤是:
1.启动Web服务器的“Internet信息服务”
2.在“Internet信息服务”中,右击Myweb站点名,选择快捷菜单的“属性”命令,出现“Myweb属性”对话框;
3.单击“Myweb属性”对话框中“目录安全性”页标签,再单击“服务器证书”按钮。
4.在“IIS证书向导”对话框中,按提示,依次选择“创建一个新证书”,“现在准备请求,但稍候发送”等,设置有关属性,将最后的证书申请以文本文件保存,假设文件名为:E:\\certreq.txt.
5.最后单击“完成”即可
(二)生成服务器证书
首先,将证书申请文件内容复制到剪切板。方法是,用记事本打开E:\\certreq.txt,查看申请文件内容。可以看到这是一个纯文本文件,以PKCS#10编码格式保存,首尾两行为申请的开始与结束。选择“编辑/全选”,再选择“编辑/复制”即可。
然后生成服务器证书。紧接前一步,在Web服务器端依次执行:
1.启动IE,在地址栏打入命令:http://10.15.11.13/certsrv;
2.选择“申请证书”,单击“下一步”;
3.选择申请类型为“高级申请”,单击“下一步”;
4.选择第2项“使用Base64编码的PKCS#10文件提交一个证书申请,或使用Base64编码的PKCS#7文件更新证书申请”,单击“下一步”;
5.右击中间“Base64编码证书申请”右边的编辑框,选择快捷菜单项“粘贴”,将证书申请内容粘贴进去(见图2);
图2(略)
6.单击“提交”按钮,则完成申请功能。
7.由于认证中心的证书颁发策略为立即颁发,因此很快,CA中心就会将证书颁发给你,屏幕上显示“您申请的证书已发布给您”,你可以“下载CA证书及CA证书路径”等提示(见图3);
图3(略)
8.选择“Base64编码”,单击对应的显示,将证书以mywebcert.cer为文件名保存在桌面上。
(三)安装服务器证书
再进入到“myweb属性”对话框中,单击“服务器证书”,在“IIS证书向导”对话框中,按提示操作即可安装服务器证书。其中要求:
1.选择“处理挂起的请求并安装证书”;
2.输入证书文件名时,单击“浏览”,选择桌面上的文件“mywebcert”(即存放刚才生成的服务器证书的文件),单击“打开”,直到出现“完成”对话框时,单击“完成”按钮即完成证书安装。
(四)查看并备份服务器证书
接上一步,单击“myweb属性”对话框中的“查看证书”按钮,将显示服务器的证书,显示内容略。在“证书”对话框中单击“详细信息”页,再单击“复制到文件”将该证书以文件名mywebcert.pfx保存在桌面上。注意文件的扩展名表示“个人信息交换”证书文件,与前面不同,文件保存了证书的公钥与私钥。
二、设置“安全通信”属性
接上一步,单击myweb属性对话框中的“编辑”按钮,选中“申请安全通道”与“申请客户证书”(见图4),再单击“确定”。
图4(略)
这表示客户浏览器查看Myweb站点的内容时,必须申请安全通道。要申请安全通道,客户端必须拥有本服务器信任的证书,否则不允许客户浏览。并且必须在地址栏打入https开头,而不是Http,进行SSL的安全通信。具体操作过程略。
如果允许客户决定与web服务器通信加密,或不加密通信,则设置为“接收客户证书”。
除此之外,还可以对证书信任列表进行设置,本文略。
三、ASP与安全web站点有关的对象与方法
(一)Session对象
Session是访问者从到达某个特定主页到离开为止的那段时间,每个访问者都会单独获得一个session.这是一个内置对象。其中属性Session.SessionID可作为一个用户session的惟一标识。我们一般设置普遍信息非加密浏览,敏感信息要求加密通信,例如一个电子商务网站,登记注册时要求加密通信,注册后察看一般产品时用非加密通信,而要输入信用卡时,又要用加密通信。为此,我们只要将两类信息在web站点下面分目录存放,其中非加密浏览的目录取消其“目录安全性”的“申请安全通道”复选框即可,方法类同2. ASP用Response.RedirectURL,将浏览器在不同的目录网页之间转换。同时,检测Session对象的SessionID属性,只要它是一样的,Web服务器就知道还是同一个用户浏览。
(二)客户证书集
客户证书可以通过Request对象来检测,所有与该Web站点通信的客户证书的信息存储在集合Request.ClientCertficate(key[SubField])中。
对于Key,该集合具有如下的关键字:
1.Subject证书的主题。包含所有关于证书收据的信息,能和所有的子域后缀一起使用;
2.Issuer证书的发行人。包含所有关于证书验证的信息,除了CN外,能和所有的子域后缀一起使用;
3.ValidFrom证书发行的日期,使用VBScript格式;
4.ValidUntel证书有效截止日期;
5.Seria1Number证书的序列号;
6.Certificate整个证书内容的二进制流,使用ASN.1格式。
对于Subfield,Subject和Issuer关键字可以具有如下的子域后缀:(比如SubjectOU或IssuerL)
C表示国家,O表示公司或组织名称,OU表示组织单元,CN表示用户的常规名称,L表示局部,S表示州(或省),T表示个人或公司的标题,GN表示给定名称,I表示初始。
当文件cervbs.inc(VBScript使用)或cerjavas.inc(Jscript使用)通过使用#INCLUDE包含在你的Active Server Page里时,下面两个标志可以使用:
ceCertPresent指明客户证书是否存在,其值为TRUE或FALSE.
CeUnrecongnizedIssure指明在该链表中的最后的证书的发行者是否未知,其值为TRUE或FALSE.
(三)服务器环境变量中与证书有关的变量
由环境变量的集合Request.ServerVaribles检测,可以通过使用HTTP前缀来读取任何头信息。与服务器证书有关的信息,可以使用下列变量获得。
AUTHPASSWORD当使用基本验证模式时,客户在密码对话框中输入的密码。
AUTHTYPE这是用户访问受保护的脚本时,服务器用于检验用户的验证方法。
AUTHUSER代验证的用户名。
CERTCOOKIE唯一的客户证书ID号
CERTFLAG客户证书标志,如有客户端证书,则bit0为0.如果客户端证书验证无效,bit1被设置为1.
CERTISSUER用户证书中的发行者字段。
CERTKEYSIZE安全套接字层连接关键字的位数。如128.
CERTSECRETKEYSIZE服务器验证私人关键字的位数。如1024.
CERTSERIALNUMBER客户证书的序列号字段。
CERTSERVERISSUER服务器证书的发行者字段。
CERTSERVERSUBJECT服务器证书的主题字段。
CERTSUBJECT客户端证书的主题字段。
HTTPS如果请求穿过安全通道(SSL),则返回ON.如果请求来自非安全通道,则返回OFF.
HTTPSKEYSIZE安全套接字层连接关键字的位数,如128.
HTTPSSECRETKEYSIZE服务器验证私人关键字的位数,如1024.
HTTPSSERVERISSUER服务器证书的发行者字段。
HTTPSSERVERSUBJECT服务器证书的主题字段。
相关热词: Windows200