作者:mikespook
版本:1.0
最后更新:2004-12-22 16:04
由于NT系统的易维护性,越来越多的中小企业在自己的网站上和内部办公管理系统上采用它,而且很多都是用默认的IIS来做WEB服务器使用。当然不能否认近来威胁NT系统的几个漏洞都是由于IIS配置不当造成的,而且可以预见,未来IIS还会被发现很多新的漏洞和安全问题,但只要我们做好合理的安全配置,还是可以避免很多安全隐患的。本文并没有系统的去讲如何全面安全的配置IIS,我只是从利用SSL加密HTTP通道来讲如果加强IIS安全的。
一、建立SSL安全机制
IIS的身份认证除了匿名访问、基本验证和Windows NT请求/响应方式外,还有一种安全性更高的认证,就是通过SSL(Security Socket Layer)安全机制使用数字证书。SSL(加密套接字协议层)位于HTTP层和TCP层之间,建立用户与服务器之间的加密通信,确保所传递信息的安全性。SSL是工作在公共密钥和私人密钥基础上的,任何用户都可以获得公共密钥来加密数据,但解密数据必须要通过相应的私人密钥。使用SSL安全机制时,首先客户端与服务器建立连接,服务器把它的数字证书与公共密钥一并发送给客户端,客户端随机生成会话密钥,用从服务器得到的公共密钥对会话密钥进行加密,并把会话密钥在网络上传递给服务器,而会话密钥只有在服务器端用私人密钥才能解密,这样,客户端和服务器端就建立了一个惟一的安全通道。
建立了SSL安全机制后,只有SSL允许的客户才能与SSL允许的Web站点进行通信,并且在使用URL资源定位器时,输入https:// ,而不是http:// 。
简单的说默认情况下我们所使用的HTTP协议是没有任何加密措施的,所有的消息全部都是以明文形式在网络上传送的,恶意的攻击者可以通过安装监听程序来获得我们和服务器之间的通讯内容。这点危害在一些企业内部网络中尤其比较大,对于使用HUB的企业内网来说简直就是没有任何安全可讲因为任何人都可以在一台电脑上看到其他人在网络中的活动,对于使用交换机来组网的网络来说虽然安全威胁性要小很多,但很多时候还是会有安全突破口,比如没有更改交换机的默认用户和口令,被人上去把自己的网络接口设置为侦听口,依然可以监视整个网络的所有活动。
所以全面加密整个网络传输隧道的确是个很好的安全措施,很可惜的是现在网络上有关于具体给IIS配置SSL的文章并不是很多,我简单的摸索了下把我的经验拿出来给大家分享。
二:按部就班——图解配置IIS5的SSL安全访问... 1 写在前面的... 1
第一步: 准备工作... 1
第二步: IIS创建证书... 3
第三步: 向“证书颁发机构”申请证书... 8
第四步: 颁发证书... 10
第五步: 安装证书,配置SSL. 12
第六步: 完成... 14
写在前面的
这几天自己的商城写完了,准备搞搞IIS5的SSL访问。查了一圈资料,发现多数文章都如出一辙。虽然写得很详细,但是东一榔头,西一棒槌,让我摸不着头脑。罢!罢!罢!直接看帮助,学着配吧。没想到顺利得很,一遍搞掂。就此写文一篇,以帮助跟我有一样困惑的朋友。
在看本文之前我先和读者做一个约定。我假设你会使用鼠标和键盘,并且能够对Windows 2000 Server进行基本的操作(我只想在本文里说明如何配置IIS5的SSL安全访问,对于如何双击图标我不想涉及。)。同时你的计算机上也正确安装有IIS和浏览器(这个是Windows 2000 Server的标准配置,如果你使用的是Windows 2000 Professional版本就不用阅读本文了,因为这个版本不支持IIS的SSL访问。)。
第一步: 准备工作
首先你应该有一台你自己的计算机,而且需要有鼠标、键盘或者你能够从其他具有鼠标键盘的计算机访问它。不要拿东西扔我,多数服务器是没有鼠标和键盘的^_^。这台计算机应该安装有Windows 2000 Server或者Windows 2000 Advance Server。其他版本的Windows要么不支持IIS的SSL访问,要么就是跟本文讨论的配置方法有出入,比如Windows 2003的IIS6。
然后就是需要检查你的计算机有没有安装“证书服务”,如果已经安装了该组件,你可以跳过本步骤。
在“控制面板”à“添加/删除程序”中点击“添加/删除Windows组件”,找到“证书服务”,在其前面打钩。如图1。
![%E6%9C%AA%E5%91%BD%E5%90%8D-1.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-1.jpg)
注意,这个服务有两个子选项“证书服务Web注册支持”和“证书服务颁发机构(CA)”。为了方便期间,这两个功能都需要安装。
![%E6%9C%AA%E5%91%BD%E5%90%8D-2.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-2.jpg)
点击下一步,“Windows组件向导”会引导你完成该服务的安装。在安装过程中会出现“证书颁发机构类型”的选择,这里务必要选择独立根(图3)。当然,如果你是在域中的话,请不要继续阅读。因为那需要创建的是企业根或者企业从属根。
![%E6%9C%AA%E5%91%BD%E5%90%8D-33.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-33.jpg)
当完成了“证书服务” 的安装后,你的“控制面板”à“管理工具”中就会多出一个“证书颁发机构”这样一个图标。
![%E6%9C%AA%E5%91%BD%E5%90%8D-3.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-3.jpg)
准备工作到此结束。
第二步: IIS创建证书
完成了上面的准备,现在就可以让IIS来申请证书了。在“控制面板”à“管理工具”中进入“Internet 服务管理器”。鼠标右键点击你需要配置的站点,在弹出的菜单中选择“属性”(如果你跟我一样是左手使用鼠标,那就点击鼠标左键。)。这时就会打开如图5的“属性”对话框。在“目录安全性”中点击“服务器证书”按钮(图6)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-4.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-4.jpg)
![%E6%9C%AA%E5%91%BD%E5%90%8D-5.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-5.jpg)
这时就会有“IIS证书向导”来一步一步提示你完成证书的申请(图7)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-6.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-6.jpg)
点击“下一步”选择“创建一个新证书”并继续(图8)。需要说名的是另外两种方式“分配一个已存在的证书”和“从密钥管理器备份文件导入一个证书”也可以正确的配置IIS的SSL访问,但是和本问所讲顺序有所不同,这里不再赘述。
![%E6%9C%AA%E5%91%BD%E5%90%8D-7.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-7.jpg)
继续创建证书,“选择现在准备请求,但稍后发送”。实际上你也只能选择这个选项,另外一个选项“立即发送请求到一个在线证书颁发机构”多数情况下不可用(图9)。我也没有查到在什么时候可用,什么时候不可用的资料。个人猜测大概是在安装“证书服务”的时候如果选择了XXXXXXXXXXXXX或XXXXXXXXXX,这里可能就可以直接申请。如果真是我猜测的这样,那后面那些麻烦的过程都可以略过不谈了。^_^
![%E6%9C%AA%E5%91%BD%E5%90%8D-8.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-8.jpg)
继续“下一步”,会要求你输入一个容易记忆的名称来标识你的证书。同时会要求你选择“位长”,实际上就是加密强度。“位长”越大,越安全。当然这是以牺牲性能为代价的(图10)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-9.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-9.jpg)
接下来是输入组织和部门,这个将会出现在你的证书中,并且当他人查看你的证书的时候会显示出来(图11)。最好还是使用合法的名称,别伪造别人的证书哦。比如我输入的组织是“mikespook & swill”,部门因为是为我的商城申请的,所以我输入“XYShop”。
![%E6%9C%AA%E5%91%BD%E5%90%8D-10.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-10.jpg)
在输入站点公用名称时要注意,最好是使用你将绑定的域名。否则在别人访问你的站点,弹出证书确认对话框时,会有一个名称不匹配的提示(图12)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-11.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-11.jpg)
接着是输入地理信息(图13)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-12.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-12.jpg)
最后一步就是将生成的证书保存下来,以备后用(图14、图15、图16)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-13.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-13.jpg)
![%E6%9C%AA%E5%91%BD%E5%90%8D-14.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-14.jpg)
![%E6%9C%AA%E5%91%BD%E5%90%8D-15.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-15.jpg)
这时在C盘根目录下就保存了一个由BASE64编码的证书文件certreq.txt。当然,如果你在保存证书(图14)的时候选择了其他路径,则有所不同了。
第三步: 向“证书颁发机构”申请证书
看到“证书颁发机构”不用紧张,我们不是要跟什么权威部门打交道,更不需要准备什么申请公文之类的烦琐文档。因为在第一步安装的“证书服务”就是我们的“证书颁发机构”。
在浏览器中输入地址
http://localhost/CertSrv/会打开“Microsoft 证书服务”页面(图17)。选择申请证书,点击按钮“下一步”。
![%E6%9C%AA%E5%91%BD%E5%90%8D-16.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-16.jpg)
在“选择申请类型”的时候应该选择“高级申请”,以便导入在第二步时生成的IIS证书(图18)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-17.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-17.jpg)
因为在第二步保存的那个证书文件是BASE64编码的,所以我们应该选择“使用BASE64编码的PKCS #10文件提交一个证书申请,或使用BASE64编码的PKCS #7文件更新证书申请”(图19)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-18.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-18.jpg)
“CTRL+A”、“CTRL+C”、“CTRL+V”这是每个使用MS操作系统的人都该熟记于心的“宝典”。用此“宝典”将第二步中生成的那个文件的内容复制于图20所示文本框中。
![%E6%9C%AA%E5%91%BD%E5%90%8D-19.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-19.jpg)
这时你就会收到“证书挂起”的通知,这就意味着你的证书已经被提交了(图21)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-20.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-20.jpg)
第四步: 颁发证书
完成了申请证书,证书就被提交到了“证书颁发机构”。呵呵,赶紧自己给自己办法一个证书吧。
进入“控制面板”à“管理工具”打开图3所示的“证书颁发机构”,打开左边的“证书颁发机构(本地)”那棵树,并找到“待定申请”(图22)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-21.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-21.jpg)
查看右边的列表,刚才提交的证书申请赫然在目(图23)。还等什么?还不赶紧通过?
![%E6%9C%AA%E5%91%BD%E5%90%8D-22.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-22.jpg)
在待申请的证书上单击鼠标右键,弹出菜单中有“所有任务”一项,选择子项“颁发”。这时这个“待定申请”就会转移到“颁发的证书”下面。
在“颁发的证书”下找到刚才那个证书,双击打开。并在“证书”à“详细信息”中选择“复制到文件”(图24)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-24.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-24.jpg)
在“证书导出向导”中,任意选择一种CER格式导出,比如“DER 编码二进制”(图25)。并保存成文件。
![%E6%9C%AA%E5%91%BD%E5%90%8D-25.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-25.jpg)
OK,到此,我们又完成一个里程碑。^_^
第五步: 安装证书,配置SSL
现在回到IIS属性下面的那个“IIS证书向导”那里(忘了?看看图7)。这时的“下一步”已经变成了“挂起的证书请求”(图26)。自然是选择“处理挂起的请求,并安装证书”了。
![%E6%9C%AA%E5%91%BD%E5%90%8D-23.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-23.jpg)
选择刚才在图22中导出的CER文件(图27)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-26.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-26.jpg)
一路“下一步”完成证书的安装。这时证书就安装好了。
安装好证书之后原先不可以使用的“编辑”按钮被激活(图28),点击“编辑”按钮打开“安全通信”对话框。
![%E6%9C%AA%E5%91%BD%E5%90%8D-28.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-28.jpg)
在“安全通信”对话框中将“申请安全通信(SSL)”前面的勾选中(图29)并确定。
![%E6%9C%AA%E5%91%BD%E5%90%8D-29.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-29.jpg)
在IIS的属性对话框的“Web站点”下找到“SSL端口”,你会发现原先不可使用的文本框现在可以录入了。将文本框内容设置为433后“确定”(图30)。
![%E6%9C%AA%E5%91%BD%E5%90%8D-27.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-27.jpg)
第六步: 完成
现在你分别用http(图30)和https(图31)方式去访问你刚才配置过的站点,看看有什么不同。
![%E6%9C%AA%E5%91%BD%E5%90%8D-30.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-30.jpg)
![%E6%9C%AA%E5%91%BD%E5%90%8D-31.jpg](/images/cnblogs_com/mikespook/%E6%9C%AA%E5%91%BD%E5%90%8D-31.jpg)
恩,OK,完成了。只要你按部就班的如此操作,配置IIS的SSL访问易如反掌。呵呵~^_^