采用SSL实现加密传输〔转〕
转自李天平作品:http://book.51cto.com/art/200906/129770.htm
7.9.2 采用SSL实现加密传输(1)
在默认情况下,IIS使用HTTP协议以明文形式传输数据,Web Service就是使用HTTP协议进行数据传输的。Web Service传输的数据是XML格式的明文。没有采取任何加密措施,用户的重要数据很容易被窃取,如何才能保护网络中传递的这些重要数据呢?
SSL(Security Socket Layer)的中文全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安全性,同时SSL安全机制是依靠数字证书来实现的。
SSL基于公用密钥和私人密钥,用户使用公用密钥来加密数据,但解密数据必须使用相应的私人密钥。使用SSL安全机制的通信过程如下:用户与IIS服务器建立连接后,服务器会把数字证书与公用密钥发送给用户,用户端生成会话密钥,并用公共密钥对会话密钥进行加密,然后传递给服务器,服务器端用私人密钥进行解密,这样,用户端和服务器端就建立了一条安全通道,只有SSL允许的用户才能与IIS服务器进行通信。
注 意 SSL网站不同于一般的Web站点,它使用的是"HTTPS"协议,而不是普通的"HTTP"协议。因此它的URL(统一资源定位器)格式为"https://网站域名"。
下面讲解如何使用SSL来增强IIS服务器和Web Service的通信安全。
实现步骤如下。
1.为服务器安装证书服务
要想使用SSL安全机制功能,首先必须为Windows Server 2003系统安装证书服务。进入"控制面板",运行"添加或删除程序",接着进入"Windows组件向导"对话框,如图7-13所示。
![]() |
图7-13 Windows组件向导 |
勾选"证书服务"选项,单击"下一步"按钮。
接着选择CA类型。这里选择"独立根CA"选项,如图7-14所示。单击"下一步"按钮,为自己的CA服务器起名,并设置证书的有效期限,如图7-15所示。
![]() |
图7-14 选择CA类型 |
![]() |
图7-15 设置CA信息 |
![]() |
图7-16 指定证书数据库 |
![]() |
图7-17 复制系统文件 |
![]() |
图7-18 安装完成 |
7.9.2 采用SSL实现加密传输(2)
2.配置SSL网站
1)创建请求证书文件
要想让Web Service使用SSL安全机制,首先需将Web Service配置为网站。然后为该网站创建请求证书文件。
依次单击"控制面板"→"管理工具"按钮,运行"Internet 信息服务(IIS)管理器",在管理器窗口中展开"网站"目录,用鼠标右键单击要使用SSL的Web Service网站,在弹出的快捷菜单中选择"属性"命令,在网站属性对话框中切换到"目录安全性"选项卡,如图7-19所示,
![]() |
图7-19 网站属性 |
然后单击"服务器证书"按钮,弹出"IIS证书向导"对话框。
在"IIS证书向导"对话框中选择"新建证书"选项,单击"下一步"按钮,如图7-20所示。
![]() |
图7-20 服务器证书 |
![]() |
图7-21 证书向导 |
![]() |
图7-22 设置证书名称 |
![]() |
图7-23 设置单位信息 |
![]() |
图7-24 设置公共名称 |
注 意 公共名称必须输入为访问站点的域名,例如要想用地址https://www.maticsoft.com访问Web Service,则此处必须填写为"www.maticsoft.com",否则将提示使用了不安全的证书,导致站点无法访问。并且切记,www.maticsoft.com和www.maticsoft.com:8001 带端口的访问也是不同的,如果设置的是www.maticsoft.com,则网站设置为www.maticsoft.com:8001来访问也是无法使用的。
然后,单击"下一步"按钮,设置国家地区,如图7-25所示。
![]() |
图7-25 设置国家地区 |
设置证书的单位、部门、站点公用名称和地理信息,一路单击"下一步"按钮。
最后指定请求证书文件的保存位置。这样就完成了请求证书文件的创建。
7.9.2 采用SSL实现加密传输(3)
2)申请服务器证书
完成上述设置后,还要把创建的请求证书文件提交给证书服务器。
在服务器端的IE浏览器地址栏中输入"http://localhost/CertSrv/default.asp"。
在"Microsoft 证书服务"欢迎窗口中单击"申请一个证书"链接,如图7-26所示。
接下来在证书申请类型中单击"高级证书申请"链接,如图7-27所示。
![]() |
图7-26 申请证书 |
![]() |
图7-27 选择证书类型 |
![]() |
图7-28 选择编码 |
接下来在新打开的窗口中,打开刚刚生成的"certreq.txt"文件,将其中的内容复制到"保存的申请"中,如图7-29所示。
![]() |
图7-29 提交证书申请 |
![]() |
图7-30 证书挂起 |
7.9.2 采用SSL实现加密传输(4)
3)颁发服务器证书
提交证书申请以后,还需要颁发服务器证书。依次选择"开始"→"设置"→"控制面板",双击"管理工具",再双击"证书颁发机构",在打开的对话框中选择"挂起的申请"选项,如图7-31所示。
![]() |
(点击查看大图)图7-31 挂起的申请 |
找到刚才申请的证书,然后用鼠标右键单击该项,在弹出的快捷菜单中选择"所有任务"→"颁发"命令,如图7-32所示。
颁发成功后,选择"颁发的证书"选项,双击刚才颁发的证书,在弹出的"证书"对话框中的"详细信息"标签页中,单击"复制到文件"按钮,如图7-33所示。
![]() |
图7-32 颁发证书 |
![]() |
图7-33 复制到文件 |
![]() |
(点击查看大图)图7-34 选择导出文件格式 |
单击"下一步"按钮,并在"要导出的文件"对话框中指定文件名,最后单击"完成"按钮。
4)安装Web服务器证书
重新进入IIS管理器的"目录安全性"标签页,单击"服务器证书"按钮,弹出"挂起的证书请求"对话框,选择"处理挂起的请求并安装证书"选项,单击"下一步"按钮,如图7-35所示。
![]() |
(点击查看大图)图7-35 处理挂起的证书 |
![]() |
(点击查看大图)图7-36 选择导出位置 |
7.9.2 采用SSL实现加密传输(5)
5)配置网站启用SSL通道
在网站属性"目录安全性"标签页中单击安全通信栏的"编辑"按钮,然后,勾选"要求安全通道(SSL)"选项,如图7-37所示。
![]() |
(点击查看大图)图7-37 启用网站SSL通道 |
忽略客户端证书:选择该选项可以允许用户不必提供客户端证书就可访问该站点。
接受客户端证书:选择该选项可以允许具有客户端证书的用户进行访问,证书不是必需的。具有客户端证书的用户可以被映射;没有客户端证书的用户可以使用其他身份验证方法。
要求客户端证书:选择该选项则仅允许具有有效客户端证书的用户进行连接。没有有效客户端证书的用户被拒绝访问该站点。选择该选项从而在要求客户端证书前,必须选择"要求安全通道(SSL)"选项。
最后单击"确定"按钮,即完成启用SSL了。在完成了对SSL网站的配置后,用户只要在IE浏览器中输入"https://网站域名"就能访问该网站。
注 意
勾选上SSL后,必须用HTTPS来访问,而访问网站的端口也会使用SSL端口,默认为443。
如果在你访问站点的过程中出现无法正常访问的情况,那么请检查服务器防火墙是否禁止对SSl端口443的访问,这点比较容易被忽视,当然你也可以自己修改端口。
如果还是不能访问,出现提示"你试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序。HTTP错误403.1-禁止访问:执行访问被拒绝。"那么请检查网站主目录的执行权限,将执行权限设置为纯脚本即可,如图7-38所示。
![]() |
图7-38 设置执行权限 |
6)客户端安装证书
如果IIS服务器设置了"要求客户端证书",则其他机器或用户想通过HTTPS访问和调用该Web服务,就需要将CA的根证书导入到客户端证书的可信任机构中,客户端才可以正常访问Web服务。
(1)选择"开始"→"运行"命令,在弹出的对话框中输入"mmc",出现如图7-39所示的界面。
![]() |
图7-39 启动控制台 |
![]() |
图7-40 添加/删除管理单元 |
(3)单击"添加"按钮,在可用独立管理单元列表中选择"证书"选项,出现如图7-41所示的界面。
(4)选择"计算机账户"选项,单击"下一步"按钮,选择"本地计算机"选项,然后依次单击"完成"→"关闭"→"确定"按钮。
![]() |
图7-41 添加证书管理单元 |
![]() |
(点击查看大图)图7-42 选择证书导入位置 |
![]() |
(点击查看大图)图7-43 导入证书 |
![]() |
(点击查看大图)图7-44 导入到证书 |
7)SSL的优点与缺点
优点:它对Web服务提供的数据完整性没有任何影响,当值返回给客户时,值还是保持原样,并没有因在传输过程中使用了加密技术而发生变化。
缺点:它对站点的整体性能有影响,因为它需要进行很多加解密的数据处理。