本文提供了一个解决方案,用于在与 Windows 7 计算机建立远程桌面服务(RDS)连接时自动生成自签名服务器身份验证证书以支持传输层安全性(TLS)。
适用于: Windows 7 Service Pack 1原始 KB 数: 2001849
现象
与 Windows 7 计算机建立 RDS 连接时,会自动生成自签名服务器身份验证证书以支持 TLS。 这允许在计算机之间加密数据。 仅在目标计算机上启用以下组策略设置并设置为 **SSL(TLS 1.0)**时加密数据:
Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Security:Require use of specific security layer for remote (RDP) connections
原因
通过 RDS 连接为 TLS 生成自签名证书是通过 Windows Vista 和 Windows 7 设计实现的。
解决方法
Windows Vista 和 Windows 7 支持服务器身份验证证书。 若要对 RDS 使用自定义证书,请执行以下步骤:
-
从证书颁发机构安装服务器身份验证证书。
-
创建以下注册表值,其中包含证书的 SHA1 哈希,以配置此自定义证书以支持 TLS,而不是使用默认自签名证书。
- 位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp - 值名称:SSLCertificateSHA1Hash
- 值类型:REG_BINARY
- 值数据: <证书指纹>
该值应为用逗号 (,) 分隔的证书的指纹,并且没有空格。 例如,如果要导出该注册表项, SSLCertificateSHA1Hash 值将如下所示:
SSLCertificateSHA1Hash=hex:42,49,e1,6e,0a,f0,a0,2e,63,c4,5c,93,fd,52,ad,09,27,82,1b,01
必须直接编辑注册表,因为 Windows 客户端 SKU 上没有用于配置服务器证书的用户界面。
- 位置:
-
远程桌面主机服务服务在网络服务帐户下运行。 因此,必须设置 RDS 使用的密钥文件的 ACL(由 SSLCertificateSHA1Hash 注册表值中命名的证书引用)以包含具有读取权限的网络服务。 若要修改权限,请执行以下步骤:
打开本地计算机的“证书”管理单元:
- 单击“开始”,单击“运行**”**,键入 mmc,然后单击“确定”。
- 在“文件” 菜单上,单击“添加/删除管理单元” 。
- 在**“添加或删除管理单元”对话框中的“可用管理单元**”列表中,单击“证书**”**,然后单击“添加”。
- 在 “证书 ”管理单元对话框中,单击“ 计算机帐户”,然后单击“ 下一步”。
- 在 “选择计算机 ”对话框中,单击“ **本地计算机:”(运行此控制台的计算机),**然后单击“ 完成”。
- 在“添加/删除管理单元” 对话框中,单击“确定” 。
- 在 “证书 ”管理单元的控制台树中,展开 **“证书”(本地计算机),**展开 “个人”,然后导航到要使用的 SSL 证书。
- 右键单击证书,选择“所有任务”,然后选择“管理私钥”。
- 在**“权限**”对话框中,单击“添加”,键入“网络服务”,单击“确定”,在“允许”复选框下选择“读取”,然后单击“确定”。
详细信息
有关如何以编程方式配置 RDP 加密设置的详细信息,请参阅 Win32_TSGeneralSetting类。