从Windows Server 2003 SP1开始,客户端便可以通过服务器身份验证安全套接字层(SSL)证书连接到远程桌面服务器。要实现这一功能,只需管理员使用和配置服务器操作系统的“远程桌面会话主机” 配置工具即可。尽管Windows Vista和Windows 7这样的客户端操作系统并无这样的管理工具可用,但服务器仍可以向它们颁发远程桌面连接证书。要通过证书来实现安全的远程桌面连接连接有两种常用配置方法。第一种方法使用组策略和证书模板来进行配置;第二种方法则是使用WMI脚本来进行配置。
第一种方法:使用组策略和证书模板
此种方式允许管理员为域中的多台计算机安装远程桌面证书,前提是域中必须有正常工作的公钥基础结构(PKI)。
首先,管理员需要创建一个远程桌面证书模板。
创建远程桌面证书模板:
在企业证书颁发机构中找到“证书模板”。 找到并右键单击“计算机”模板,选择“复制模板”。 在弹出的对话框中选择“Windows Server 2008 Enterprise”模板类型。
此时会弹出一个新模板的“属性”对话框。 我们在“常规”选项卡中将“模板显示名称”和“模板名称”改为“RemoteDesktopComputer”以方便今后识别和使用。注意:此处的模板显示名称和模板名称必须相同。 再到“扩展”选项卡中选择“应用程序策略”并点击“编辑”按钮。 此时会出现一个“编辑应用程序策略扩展”对话框。
要创建“远程桌面身份认证”策略必须先删除“客户端身份验证”和“服务器身份验证”策略,然后再点击“添加”。 此时会出现一个“添加应用程序策略扩展”对话框。我们在对话框中单击“新建”。
此时会出现一个“新建程序策略扩展”对话框。我们在“名称”中输入“Remote Desktop Authentication”,再在“对象标识符”中输入“1.3.6.1.4.1.311.54.1.2”并单击“确定”。
在“添加应用程序策略”对话框中选中“Remote Desktop Authentication”点击“确定”。 现在“编辑应用程序策略扩展”对话框显示如下:
再通过点击2次确定后,就回到新模板的“属性”对话框了。此时,新模板的准备工作已经完成。
下一步骤就是发布模板。
发布“RemoteDesktopComputer”证书模板:
在企业根证书颁发机构中找到“证书模板”。 在“证书模板”上右键单击并选择“新建”—“要颁发的证书模板”。 此时会弹出一个“启用证书模板”对话框。我们找到并选择“RemoteDesktopComputer”,然后单击确定。 现在“RemoteDesktopComputer”模板已经发布并可以用于证书请求。
最后一步,我们需要使用组策略将“RemoteDesktopComputer”模板配置为远程桌面身份验证的基本证书。
配置组策略
在域控制器上打开“组策略管理”工具,右键单击“默认域策略”并点击“编辑”。此时会弹出“组策略管理编辑器”(注意:策略可以应用到域中的所有计算机,管理员也可以根据需要将其应用到所需的OU) 导航至“计算机配置—策略—管理模板—Windows 组件—远程桌面服务—远程桌面会话主机—安全。” 双击“服务器身份验证证书模板”策略 启用策略,并在“证书模板名称”中输入“RemoteDesktopComputer”并点击确定。
当此策略应用到域中的所有计算机后,所有启用远程桌面连接的计算机都将到证书颁发机构服务器去请求基于“RemoteDesktopComputer”模板的证书,并用证书对远程桌面客户端进行验证。(管理员可通过gpupdate /force命令在客户端上强制刷新以获取到组策略的更新) #p#
第二种方法:使用WMI脚本
此方法允许管理员直接使用远程桌面连接的服务器证书,但管理员需要提前手动对证书进行安装。这种方法通常用于:使用企业向Internet公共证书颁发机构购买的证书。
首先需要检查我们已有的证书是否符合远程桌面证书的要求。不符合这些要求的证书将不能正常工作,并将被服务器忽略。
远程桌面证书的基本要求:
证书必须安装到计算机的“个人”证书存储区域中 必须拥有证书的私钥 证书的“增强型密钥用法”扩展中应有“服务器身份验证”或“远程桌面身份验证”(1.3.6.1.4.1.311.54.1.2)。
为了正常使用,我们首先要获取到远程桌面连接证书的指纹。
获取证书的指纹:
双击已有的证书 单击“详细信息”标签 在列表中选择“指纹”
将指纹值复制到记事本当中 删除数字之间的所有空格
如上图示例,我们获取到的指纹应该是: 3d710cecbb29d5dfcb61a6157cefd746b7b04b74
注意:当我们获取到证书指纹之后,才能通过脚本将证书应用于远程桌面连接。.
配置远程桌面证书的WMI脚本:
/* ============================================================== JScript Source File NAME: ConfigRemoteDesktop.js AUTHOR: Billy Fu DATE : 2010/8/2 ==================================================================*/ var strComputer = ".";
var strNamespace = "\\root\\CIMV2\\TerminalServices"; var wbemChangeFlagUpdateOnly = 1; var wbemAuthenticationLevelPktPrivacy = 6; var Locator = new ActiveXObject("WbemScripting.SWbemLocator"); Locator.Security_.AuthenticationLevel = wbemAuthenticationLevelPktPrivacy; var Service = Locator.ConnectServer (strComputer, strNamespace); var TSSettings = Service.Get("Win32_TSGeneralSetting.TerminalName=\"RDP-Tcp\""); if (WScript.Arguments.length >= 1 ) { TSSettings.SSLCertificateSHA1Hash = WScript.Arguments(0); } else { TSSettings.SSLCertificateSHA1Hash = "0000000000000000000000000000000000000000"; } TSSettings.Put_(wbemChangeFlagUpdateOnly);
将以上脚本内容复制到 “ConfigRemoteDesktop.js”文件当中,并以管理员方式启动命令提示符号(Cmd.exe.),再通过“cscript ConfigRemoteDesktop.js <证书指纹>”命令来将证书应用到远程桌面连接。
(注意:执行此脚本不加任何参数时将自动还原到远程桌面的自签名证书)
【编辑推荐】