首先是服务器端的认证。现在比较简单的办法就是找相关的认证服务公司,按照网上提示,可以申请获得证书,一些公司对于低级证书是免费的,高级别的证书每年数百至数万元证书费不等。我从Wosign申请了免费的DV证书,有效期三年,可以对两个域名进行认证。安装过程有点周折,但是学会了下次就容易了。申请得到的证书知识服务器端的证书,向访问网站的人证明“我是我”,但是无法实现对客户端(访问者)的认证,那就是不能确定谁能够访问。问了公司,也没有一个明确的答复。
第二种方法是不通过公司,自己通过软件来发放证书,可以给服务器发证书,也可以给客户端发证书,实现双向认证。有一个德国的软件叫Xca,网上有下载,在服务器上安装后,可以生成证件。我试了,但是似乎没有达到预期的效果。我不怀疑软件的可用性,一定是操作过程中有些环节没有掌握。
第三种方法是Windows自带的Active Directory 证书服务(AD CS)。原来操作系统里面早有了证书服务的模块,只是缺省情况下没有安装。采用ADCS发放证书,方法比较简单,如果是内部或者一定范围内的使用一点没有问题,但是如果是面向社会公众使用的,别人不认识你这个证书是啥意思,不知道是否可信。第三方公司,实际上是起到见证人、公证人的作用。所以对于提供公众服务的,可能需要第三方机构的证书了。
怎么安装使用AD CS? 我花了两个星期,问了几个客服,都没有解决我安装过程中的问题,后来请教了微软的工程师,终于“勉强”完成了配置,经过测试已经可以使用了。
在安装AD CS过程中会出现各种意想不到的问题。我遇到的问题是,添加服务器角色AD CS后,安装过程很顺利,但是最后告诉你,安装成功,但是需要的服务没有启动。然后也不能正常使用。提示的错误信息如下:Active Directory证书服务安装程序失败,错误如下:没有启动服务器服务 0x80070842(win32:2114)。
查了不少资料,有攻略说:需要安装文件和打印机共享。装了,没用!后来,微软的说,是安装后AD CS本身无法启动。用services.msc启动一下就好了。
安装好ADCS后,在IIS中可以看到,default web site下面有原来的aspnet_clint目录,还增加了一个目录:CertEnroll,两个网站: CertSrv、ocsp。
路径是: c:\Windows\system32\certsrv\certEnroll, c:\windows\system32\Certsrv\zh-cn, c:\windows\systemdate\ocsp, Default web site路径: %systemDrive%\inetpub\wwwroot
尽管如此,安装后的AD CS还是有很多奇葩的事。通过web方式可以申请证书,但是在服务器端和客户端浏览器访问同一个网站,显示的内容竟然会不一样。在客户端并不能顺利地申请证书,只能在服务器端用浏览器以web方式操作。这个问题继续研究中。
昨天又做了一次实验,将系统重新回复到纯净状态,只有操作系统Windows2008R2,没有安装其他程序。这种情况下同时配置ADCS和IIS出奇地顺利。这提示我们,如果需要启用证书服务,在安装操作系统后马上布置,会顺利很多,因为没有其他软件的干扰。
如何使用AD CS进行双向认证?网上资料不少,过段时间,我把我的实验过称送上。待续。