在以前的文章中,我介绍过,使用Windows Server 2003(Active Directory、企业证书服务器)、ISA Server 2006组建使用“智能卡”进行身份验证的文章,现在Microsoft已经推出Windows Server 2008、Windows Server 2008 R2以及ISA Server的下一代产品TMG2010很久了,就有朋友问,我已经按照你的文章,在Windows Server 2003、ISA Server 2006组建“智能卡”进行身份验证的服务器已经成功,但我参照这篇文章、使用Windows Server 2008、TMG2010组建用“智能卡”进行身份验证的×××服务器时,发现在Windows Server 2008的“企业证书服务器”中,没有“通过使用智能卡证书注册站来为另一用户申请一个 智能卡证书”这一项,这时候怎么办呢?那是不是不能使用Windows Server 2008做证书服务器呢?答案是否定的。
但是,由于各种原因(具体我也不是很清楚),在Windows Server 2008及其Windows Server 2008 R2中,在“企业证书服务器”的证书申请页中,确实是没有“通过使用智能卡证书注册站来为另一用户申请一个 智能卡证书”这一选项,如果你要想使用这一功能,可以将Windows Server 2003的“企业证书服务器”中的相应代码与程序“移植”到Windows Server 2008中使用。好,下面我们通过具体的实例介绍这一功能。
1 添加智能卡注册代码与控件
使用Windows 2008证书服务器为智能卡颁发证书_第1张图片
图1
在图1中,有一台Windows Server 2008计算机,IP地址是192.168.66.15,升级到Active Directory,并安装“企业证书服务器”。网络中一台Windows XP的计算机,加入到Active Directory并安装“智能卡”驱动程序。稍后会用这台Windows XP的计算机,为“智能卡”颁发证书。
(1)在网络中另外一台计算机上,安装Windows Server 2003,并升级到Active Directory,安装“企业证书服务器”,安装完成之后,从C:\WINDOWS\system32\certsrv目录中,复制certcontrol目录到Windows Server 2008的C:\Windows\System32\certsrv目录中,如图2所示。
使用Windows 2008证书服务器为智能卡颁发证书_第2张图片
图2 复制certcontrol
【说明】在此只是为了复制企业证书服务器的一些文件,Active Directory的名称可以随意。如果你以前有安装好的企业证书服务器,可以直接复制。
(2)在Windows Server 2008中,用“记事本”编辑C:\Windows\System32\certsrv\zh-CN目录中的certrqad.asp文件,在
        
         使用 base64 编码的 CMC PKCS #10 文件提交
         一个证书申请,或使用 base64 编码的
部分,在 之间,插入如下的代码:
        
         通过使用智能卡证书注册站来为另一用户申请一个
        
         注意: 您必须有一个注册代理证书来为另一
         用户提交请求。
        
【说明】这个插入的代码部分,是对比Windows Server 2003与Windows Server 2008证书申请代码部分得到的,你可以直接从Windows Server 2003的certrqad.asp中复制这部分代码。
插入后的代码如下:
        
         使用 base64 编码的 CMC PKCS #10 文件提交
         一个证书申请,或使用 base64 编码的
        
         通过使用智能卡证书注册站来为另一用户申请一个
        
         注意: 您必须有一个注册代理证书来为另一
         用户提交请求。
        
【注意】在Windows Server 2008中,certrqad.asp的权限不允许Administrator修改,你需要先“获取”该文件的所有权为Administrator,然后再编辑并保存这个文件。
然后从Windows 2003的certsrv目录中,复制certsces.asp、certugr.asp、certlynx.asp、certdat.inc 四个文件到Windows 2008的certsrv\zh-cn目录。
(3)进入“IIS信息服务管理器”,在默认网站中,添加虚拟目录,虚拟目录的名称为certcontrol ,目录为C:\Windows\System32\certsrv\certcontrol,如图3所示。
使用Windows 2008证书服务器为智能卡颁发证书_第3张图片
图3 创建虚拟目录
(4)进入“Active Directory证书服务”中,在“证书模板”中添加“注册代理(计算机)、智能卡登录、注册代理、智能卡用户”模板,如图4所示,然后重启证书服务器。
使用Windows 2008证书服务器为智能卡颁发证书_第4张图片
图4 添加证书模板
经过上述处理,即可以为“智能卡”颁发证书了。
2 在工作站上申请证书
在Windows XP工作站上,加入到Active Directory,并以域管理员帐户登录,在安装好智能卡驱动程序后,进行下列操作:
(1)执行mmc,添加“证书→我的用户帐户”管理单元,并在“个人→证书”中,申请“注册代理”证书,如图5所示。
使用Windows 2008证书服务器为智能卡颁发证书_第5张图片
图5 申请注册代理证书
(2)登录证书颁发机构,在本例中为http://192.168.66.15/certsrv,进入“高级证书申请”,可以看到,已经存在“通过使用智能卡证书注册站来为另一用户申请一个 智能卡证书”这一项,如图6所示。
使用Windows 2008证书服务器为智能卡颁发证书_第6张图片
图6 已经添加智能卡证书注册站
(3)在“智能卡证书注册站”页中,选择“智能卡登录”,并选择加密程序、选择证书、选择用户后,插入智能卡,就可以颁发证书到智能卡中了,如图7所示。
使用Windows 2008证书服务器为智能卡颁发证书_第7张图片
图7 为智能卡颁发证书