HOWTO: 为 Remote Desktop Services (RDP) 创建和指派证书
HOWTO: 为 Remote Desktop Services (RDP) 创建和指派证书
Windows 启用远程桌面后,会使用自签名证书加密 RDP,这导致用户在通过 MSTSC 启动 Remote Desktop Connection 进行连接时遇到不受信任的警告提示,此外如果部署了 Remote Desktop Services - RemoteApp,也是需要为其配置证书的,本文将只分享如何创建用于 RDP 证书,以及为 RDS 指派证书的方法和过程,其他相关的细节不会指出和讨论。
要创建 RDP 证书需要使用 x509 证书的增强型密钥用法扩展 - “微软远程桌面验证”(Remote Desktop Authentication) ,其 OID 为:1.3.6.1.4.1.311.54.1.2 ,其中各字段表示的含义如下:
- 1.3.6.1.4.1.311.54.1.2 - 微软远程桌面验证(Remote Desktop Authentication)
- 1.3.6.1.4.1.311 - Microsoft
- 1.3.6.1.4.1 - IANA 注册的私营企业
- 1.3.6.1.4 - 互联网私人
- 1.3.6.1 - 来自 1.3.6.1 的 OID 分配 - 互联网
- 1.3.6 - 美国国防部
- 1.3 - ISO 识别组织
- 1 - ISO 分配的 OID
已经获取到 Remote Desktop Authentication 的 OID 为 1.3.6.1.4.1.311.54.1.2,接下来就可以创建用于 RDP 的证书模板,为此启动 ADCS 控制台进入证书模板管理,基于“计算机”证书创建 RDP 证书,在“扩展”选项卡下,编辑“应用程序策略”,根据前面提供的 OID 添加新的策略扩展。
当我们基于 RDP 证书模板获取到证书后,就需要指派给本机 RDP,可以参考微软官方的知识库 KB3042780 提供的方法操作。
首先,取得 RDP 证书的 指纹,可以从申请到的证书详细信息中获取,将其复制到一个文本文件中,以备后用。
为了确保后续能正常使用,请将指纹复制到 CMD 中,删除字符串中的空格以及首部的 ASCII 字符,并重新复制到文本文件中。
证书指纹准备就绪后,执行如下指令替换当前计算机的 RDP 证书。
至此,配置结束。当然我们也可以修改注册表实现如上的步骤。
注册表路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
键名称:SSLCertificateSHA1Hash
键类型:REG_BINARY
键值:证书指纹
因为 RDS 运行在 “NETWORK SERVICE” 账户下,我们需要通过 MMC 载入 证书 模块,找到 RDP 证书,在 “权限” 中添加 “NETWORK SERVICE” 允许 “读取”。
HOWTO: 使用 Windows 10 预配包为用户卸载内置应用
HOWTO: 使用 Windows 10 预配包为用户卸载内置应用
早先 gOxiA 分享过一篇日志“HOWTO: 卸载 Windows 10 内置应用”,介绍了如果使用 PowerShell 指令查询和卸载 Windows 10 内置的“现代”应用,今天则与大家分享如何使用预配包(ppkg)为用户卸载内置应用。那什么是预配包呢?
Windows预配可使IT管理员轻松配置最终用户设备,而无需映像处理。预配包(.ppkg)是一系列配置设置的容器,遵循 CSP(配置服务提供程序)规范,且包含以下优点:
- 快速配置新设备,无需完成安装新映像的过程。
- 通过使用单个预配包配置多台设备来节省时间。
- 在没有MDM基础结构的情况下,在组织中快速配置员工所拥有的设备。
- 在设备没有网络连接的情况下配置设备。
预配包在实施中可通过移动媒体安装;也可以附加到电子邮件中;或从网络共享下载;设置还可以在 NFC 标记或条形码中部署。
有关 Windows 10 预配包的详细信息可参考官方资料。
https://docs.microsoft.com/en-us/windows/configuration/provisioning-packages/provisioning-packages
要创建和生成 Windows 10 预配包需要在 IT 管理员的系统上安装 Windows ADK,其中 ICD (Windows 映像和配置设计器)组件即是预配包的创建工具,在 ICD 准备就绪后,我们需要先获取到当前 Windows 10 版本内置的应用列表,其中 PackageFamilyName 是必要的信息,可以通过 PowerShell 指令实现。
拿到了 Windows 10 内置应用名称列表后,便可启动 ICD 创建用于卸载内置应用的预配包。为此在 ICD 组件列表中定位到 “UniversalAppUninstall” 下的 “Uninstall”,然后在中间的编辑窗体中填入我们要卸载的 Windows 10 内置应用的 PackageFamilyName 名称,如下图所示添加了两个要卸载的内置应用到 Uninstall 列表中。
然后,再点击左侧组件列表中添加到 Uninstall 下的应用名称,将其配置选项改为“Uninstall”,此时添加的配置才会正式生效,然后再保存并发布预配包,获得名为“RemoveApps.ppkg”的预配包。
在最终用户系统上拿到该预配包后,可以通过双击直接运行,在弹出的“此程序包是否来自你信任的源”提示框中单击“是的,添加它”即可。
此外,我们也可以通过 PowerShell 指令以静默方式进行安装,命令行如下:
本文参考来源:https://blogs.technet.microsoft.com/mniehaus/2018/06/02/yet-another-way-to-clean-up-in-box-apps/
[RDS] HOWTO: 修改RemoteApp和桌面连接的自动更新周期
HOWTO: 修改RemoteApp和桌面连接的自动更新周期
在 RDS 环境中,客户端系统在控制面板的“RemoteApp和桌面连接”中添加了 RDWeb 的订阅,其更新方式默认为自动,且提示了会定期自动更新,但是并没有详细说明更新周期。如果用户此时需要更新 RDWeb 订阅以刷新发布的 RemoteApp 列表,则必须手动点击“立即更新”,那么是否有什么方法能够自定义更新周期呢?!
检查了 RDS 的相关设置和选项,也查阅了组策略,均没有线索!最后,通过对“RemoteApp和桌面连接”添加过程的轨迹进行了抓包,分析发现当添加一个 WorkResouces 时会向注册表添加连接信息数据(HKCU\Software\Microsoft\Workspaces\Feeds),并向任务计划添加一个定时任务,该任务位于任务计划路径"Microsoft\Windows\RemoteApp and Desktop Connections Update"下,任务计划名称是“Update connections”,如下图所示。
该任务的默认更新周期是一天更新一次,时间为每天的0:00,但是这个时间周期在实际环境下基本上是无效的,毕竟很少的用户会全天运行系统。所以,可以根据需要将其更改为每次登录时进行刷新。
此外,这个任务计划还为我们提供了非常有价值的命令行,通过下面的命令行可以执行手动刷新 RDWeb 订阅。
“%SYSTEMROOT%\System32\RUNDLL32” tsworkspace,TaskUpdateWorkspaces2
对于系统运维人员,可以利用上面的命令行编写脚本运行,方便调用。
掌控了“RemoteApp和桌面连接”的自动刷新周期,就可以方便的更新发布的程序列表,以实现便捷的推送和回收需求。