用TLS搭建即时通讯的安全通道:LCS2005系列之三

TLS 搭建即时通讯的安全通道
上篇博文中我们介绍了客户机如何利用 LCS 所提供的即时通讯功能,也让两个用户借助 LCS 服务器实现了即时通讯,只是在上篇博文中客户端连接服务器是基于未加密的 TCP 协议,安全方面不是很到位,也要顾忌恶意用户在内网对即时通讯数据进行嗅探。今天我们做些改进,让客户端连接服务器基于加密的 TLS ,这样就可以很好地保护即时通讯数据的安全。 TLS 是传输层加密的缩写,就是在传输层协议的基础上使用证书对数据进行加密保护,我们想要用 TLS 实现 SIP ,必须有证书服务器的配合。下面我们将通过一个实验向大家说明应该如何让这些服务器有条不紊地开展工作。实验拓扑如下图所示,我们准备让域控制器 Florence 承担 CA 服务器的角色,其余的环境和上篇博文完全一样。
 
安装证书服务器
TLS 对即时通讯数据进行加密需要有证书服务器的支持,我们准备在 Florence 上安装证书服务器,类型最好选择企业根,因为企业根 CA 可以很好地和 Active Directory 结合,有助于提高管理效率。我们在 Florence 上打开控制面板-添加 / 或删除程序-添加 / 删除 Windows 组件,如下图所示,勾选“证书服务器”。
 
CA 类型选择“企业根 CA ”。
 
CA 命名为 LCSCA ,其余设置取默认值即可。
 
证书数据库路径取默认值即可。
 
如下图所示,证书服务器安装完成。
 
证书服务器安装完成后,域内其他的计算机需要信任这个证书服务器,如果有耐心,可以等待一下,最多不超多 90 分钟组策略就会通知域内所有的成员服务器和工作站信任 LCSCA 这个证书颁发机构。如果想让组策略尽快生效,可以如下图所示运行 gpupdate/force ,这样可以可以强制组策略立即生效。
 
组策略生效后,还要检查一下 LCSCA 到底有没有被当作可信任的证书颁发机构,如下图所示,如果 LCSCA 已经出现在受信任的根证书颁发机构中,那我们就可以放心地进行后续工作了。 注意,一定要确保实验用的所有计算机都信任 LCSCA
 
LCS 服务器申请证书
创建了证书服务器,接下来我们就要在证书服务器上为 LCS 服务器申请证书了,在 Berlin 的浏览器中输入 [url]http://florence/certsrv[/url] ,如下图所示,选择“申请一个证书”。
 
接下来选择提交一个“高级证书申请”。
 
选择“创建并向此 CA 提交一个申请”。
 
如下图所示,证书模板选择“ Web 服务器”, Web 服务器可以证明 LCS 服务器的身份。证书要保存在计算机存储中,这样才可以被 LCS 服务器使用。证书姓名要取决于客户机访问 LCS 服务器时所使用的参数,由于客户机是通过 DNS 查询来定位 LCS 服务器,因此客户机连接服务器使用的是完全合格域名 berlin.lcstest.com ,我们为 LCS 服务器申请的证书姓名应该也是 berlin.lcstest.com
 
申请证书后,证书服务器会立即颁发所申请的证书,如下图所示,选择“安装此证书”,就完成证书的申请了。
 
LCS 服务器使用证书
LCS 服务器申请证书后,就要利用申请到的证书配置 TLS 了。在 Berlin 的管理工具中打开“ Live Communications Server 2005 ,如下图所示,我们发现目前Berlin 只在 5060 端口提供 TCP 连接,右键点击 Berlin.lcstest.com ,选择属性。
 
LCS 服务器属性中点击“添加”按钮。
 
如下图所示,为新添加的连接选择传输类型是 TLS ,端口是 5061 ,点击“选择证书”。
 
选择使用刚申请到的证书 berlin.lcstest.com ,点击确定。
 
如下图所示,我们配置好了新添加的连接,点击确定结束。
 
如下图所示, LCS 服务器已经可以在 5061 端口提供基于 TLS 的加密连接了。
 
配置 SRV 记录
现在 LCS 服务器可以提供 TLS 连接,但我们还要通过 DNS SRV 记录向 LCS 客户端传递这个消息,在 DNS 服务器上打开 DNS 管理器,如下图所示,右键点击 lcstest.com 区域,选择新建“其他新记录”。
 
选择创建 SRV 类型的新记录。
 
如下图所示, SRV 记录描述了 lcstest.com 域中的 berlin.lcstest.com 5061 端口可以提供基于 TLS SIP 服务,至此, SRV 记录创建完毕。
 
客户机测试
万事俱备,只欠东风,我们可以在客户机上测试一下 TLS 的效果了。我们在 Perth 上关闭 Windows Messenger ,如下图所示,使用 ipconfig/flushdns 来清除 DNS 缓存, 免得查询不到 DNS 新增加的 SRV 记录。
 
清除 DNS 缓存后,我们让 User1 重新登录 LCS 服务器,如下图所示, User1 已经成功登录 LCS 服务器,那么,客户端连接服务器使用的是 TCP 还是 TLS 呢?
 
如下图所示,我们在 Perth 上使用 netstat �Cano |find “5061” 来查询 perth 5061 端口的连接,从查询结果可以看出, perth 正在连接 LCS 服务器的 5061 端口,客户端连接服务器使用的是基于 TLS 的加密连接,实验成功。这里有个问题,如果 LCS 服务器既提供 TCP 连接,又提供 TLS 连接,那么客户端会优先使用哪种连接呢?其实从上篇博文的抓包结果可以看出,客户端会优先使用安全性更高的 TLS 连接。
 
 

你可能感兴趣的:(tls,证书,SIP,SRV,LCS2005)