在IIS上面布置SSL实现web安全通信

时间:2024-04-16 15:19:47

首先介绍一下什么是SSL?
    SSL已成为应用最广泛的互连网安全协议了,有必要对其理解,但是由于篇幅所限对其实现过程中涉及的算法等复杂原理就不做过多的进解,只能用通俗的语言进行一下简单的介绍。
SSL(Security Socket Layer)的中文全称是“加密套接字协议层”,是由Netscape公司推出的一种安全通信协议,它位于HTTP协议层和TCP协议层之间,能够对信用卡和个人信息提供较强的保护。SSL在客户和服务器之间建立一条加密通道,确保所传输的数据不被非法窃取,SSL安全加密机制功能是依靠使用数字证书来实现的。
SSL介于HTTP协议与TCP之间,结构如下:
HTTP
SSL
TCP
IP

SSL传输过程用到的端口是443
SSL会话过程
    应用了SSL加密机制后,IIS服务器的数据通信过程如下:首先客户端与IIS服务器建立通信连接,接着IIS把数字证书与公用密钥发给客户端。然后客户端使用这个公共密钥对客户端的会话密钥进行加密后,传递给IIS服务器,服务器端接收后用私人密钥进行解密,这时就在客户端和IIS服务器间创建了一条安全数据通道,只有被IIS服务器允许的客户才能与它进行通信。

原理就讲解到这里下面介绍如何在IIS5.0上实现SSL
    Windows网络操作系统内置的IIS是大家最常用的Web服务器。但在系统默认配置下,IIS使用的是“HTTP协议”以明文形式传输数据,没有采用任何加密手段,传输的重要数据很容易被窃取,如果用Sniffer pro这类的软件就能从抓的数据包上反映出来。这对于一些安全性要求高的网站来说,是远远不够的。为了保证重要数据的万无一失,IIS也提供了SSL安全加密机制,下面就向大家介绍如何在IIS服务器中使用SSL安全加密机制。笔者以Windows Server 2000(简称Windows 2000)系统为例,介绍如何在IIS5.0服务器中应用SSL安全加密机制功能。
系统要求:
Windows 2000 Server
IIS 服务(端口必须为80)

第一步:先安装CA中心(证书颁发机构)
    Win2000中带有CA的安装程序。单击“开始”,“添加/删除程序”,单击“添加/删除Windows组件”。选择“证书服务”。

    下一步中,安装需要指出服务器授权的类型,一般选择第一项(或第三项),一般如果没有安装AD活动目录的话选择第三项:独立的根。然后在下一步中给自己的CA起一个名字。然后,需要指定共享文件夹,这作为证书服务的配置数据存储位置,单击“下一步”,安装完毕。

    注意:自己建立CA 机构时,所给CA机构起的名是自己定义的,在客户端的IE中,在一开始并不属于客户端信任的根证书颁发机构,如果,客户端没有把该CA机构加为自己所信任的根证书颁发机构,那么在客户端访问该服务器上的网站时,会出现安全警告信息。这也是为什么我们访问一些HTTPS网站要出现安全警告信息的原因。

第二步:为你的站点生成公钥
    在IIS信息服务中,选择你要保护的站点。注意:你的站点的IP地址请使用制定的IP地址,不要使用“(全部未分配)”。比如我的制定为192.168.77.110。然后,到“目录安全性”页面,按“服务器证书”按钮,调出向导,
    依次选择“创建一个新证书”---“现在准备请求,但稍候发送”---“选选择1024位长”
---<以后输入你的组织信息>---在为证书请求输入一个文件名的地方,输入一个txt文件名---完成。到此,我们就已经为此站点生成了一个公钥,放到txt文件中了。

第三步:向CA中心申请证书
    打开IE,在地址栏中输入http://localhost/certsrv,
    选择“申请证书”-->“高级申请”-->“使用 base64 编码的 PKCS #10 文件提交一个证书申请,或使用 base64 编码的 PKCS #7 文件更新证书申请”-->打开你刚才生成的txt文件,内容全选,复制后,粘贴到“Base64编码”的框中,提交,申请成功。

第四步:为站点颁发证书
    打开管理工具中的“证书颁发机构”,在“待定申请”中,就有了我们刚才提交的申请,用鼠标右键单击,“所有任务”,“颁发”即可。你可以到“颁发的证书”中看到我们的证书已经存在了。
    接着点击 “颁发的证书”目录,打开刚刚颁发成功的证书,在 “证书”对话框中切换到“详细信息”标签页。
    点击“复制到文件”按钮,弹出证书导出对话框,一路下一步,在“要导出的文件”栏中指定文件名,这里笔者保存证书路径为“c:/dengpc.cer”,最后点击“完成”。

第五步:给Web站点安装证书
打开IIS信息服务,选择刚才的Web站点,“属性”,“目录安全性”,“服务器证书”,
第一项,安装证书,下一步,选择c:/dengpc.cer,下一步,完成安装证书。然后到“Web 站点”页面,在SSL端口中输入443。
第六步:验证
打开IE,发现在地址栏中输入https://192.168.77.110可以访问的站点。

通过以上步骤,现在成功的在IIS5.0上面布置了SSL。

利用SSL加强客户端访问验证
    如果在HTTPS访问下要求客户端验证,请在客户证书中选择“申请客户证书”,这样没有客户证书的客户将不再允许访问。选择启用证书信任列表,将阻止证书被吊销的客户访问。确定。 打开IE,在地址栏中输入http://<你的域名或者IP地址>/certsrv,选择“申请证书”-->“用户证书申请”&“Web浏览证书”-->输入客户的信息,提交。然后管理员在“证书颁发机构”中颁发证书,用户在来到http:// <你的域名或者IP地址>/certsrv中“检查挂起的申请”,把证书安装到他自己的机器上,即可以通过SSL安全的访问我们的Web站点。

下面来验证一下HTTP与HTTPS通信时网络传输时数据包的变化:
    由于在本机上sniffer pro不能抓包,我就在出口路由上面做了一个端口重定向到我本机来做的测试。注意要把80与443端口同时映射到本机。
访问一般IIS抓取数据包

访问布置了SSL的IIS抓取数据包

从上面的抓包情况就可以看出来两种传输方式的差别与安全性对比。

    不过SSL的布置是增加了安全性,可是这也是以牺牲CPU资料与降低网络传输效率为代价的,因为在SSL加密与解密过程中CPU将进行非常复杂的运算,这是运算都将由CPU来完成,现在为了缓解CPU这方面压力,有专门的硬件设备实现SSL的运算以此来减轻服务器的运算与处理压力,并且从上图也可以看出SSL的会话过程会额外增加网络的数据传输。所以只有那种安全性比较的网站才适合在Web服务器上布置SSL。根据不完全统计,Web服务器在布置SSL后在处理访问请求的最大负荷,只能达到原来没有布置SSL的10%左右,在使用前请对其访问量做出合理的判断及对服务器的性能进行衡量。
    IIS布置了SSL后对许多原来攻击都能起到很好的作用,如:利用流光来穷举用户密码等等这样类似的攻击,究其原因就是SSL在会话处理方面比原始的HTTP会话要严格得多。
    这里顺便提一下无线传输协议WAP中的WTLS,其实WTLS协议跟SSL没有太多的区别,只里面加了一种成为key_refr esh的机制,当传递了一定数量数据包后,双方通过同样的算法将自己的密钥做一下更新。付出了很小的代价,安全性得以增强