我有一个新安装的 Windows Server 2016 远程桌面服务器,我正在尝试为其生成证书。具体来说,我认为我需要为“RD 连接代理 - 发布”角色服务配置证书。
我能找到的所有 Microsoft 文档和大多数第三方内容似乎都假设证书要么是自签名的,要么是使用 Microsoft 证书颁发机构服务内部生成的。我想要的是由合适的第三方公共证书颁发机构签名的证书,这样它就会在所有 Windows 机器上默认受信任。
部署属性向导无法生成证书请求,因此您需要使用证书 MMC 管理单元(或 IIS,但我没有安装它)。不幸的是,证书管理单元不太用户友好,并且如何继续操作并不明显。
如何使用证书管理单元生成适合“RD 连接代理 - 发布”角色服务的证书请求?
答案1
这就是对我有用的方法。不过,如果能对其中一些选择的实际含义进行扩展,我将不胜感激!
打开要为其生成证书的远程桌面服务器上的 MMC 控制台,添加证书管理单元,选择“计算机帐户”和“本地计算机”选项。转到个人/证书,右键单击并选择所有任务 -> 高级操作 -> 创建自定义请求。
单击下一步。选择“继续而不考虑注册策略”,然后再次单击下一步。
对于模板,我选择了“(无模板) CNG 密钥”。我发现有些帖子说你需要选择 Legacy 选项,但我看不出有什么理由这样做,而且 CNG 选项确实按预期工作了。
对于请求格式,我选择了 PKCS #10。
在证书信息对话框中,单击详细信息,然后单击属性。
在常规选项卡中,添加友好名称和描述。
在主题选项卡中,添加服务器(或服务器场)的完全合格 DNS 名称作为“通用名称”。请注意,具有不合格名称(无论是作为主题还是作为备用名称)的证书请求很可能会被证书签名机构拒绝。
我还添加了组织、地点、州和国家。如果服务器有多个 DNS 名称,您可能还希望在此时添加备用名称。
在扩展选项卡的扩展密钥使用下,添加服务器身份验证。我没有在此选项卡中做任何其他更改。(有些帖子说您还应该包括代码签名,大概是为了您可以签署 RDP 文件;这似乎没有必要,因为我能够使用它rdpsign
来签署我的 RDP 文件,并且证书已被 Microsoft 客户端接受。)
在“私钥”选项卡的“密钥选项”下,我将密钥大小更改为 2048,并设置“使私钥可导出”标志。这是必要的,因为“部署属性”对话框只允许您将证书作为文件导入,然后证书和私钥将传输到会话主机服务器。我在此选项卡下没有做任何其他更改。
关闭“属性”对话框后,单击“下一步”。将请求保存为 Base64 格式的文件。单击“完成”。将请求提交给您的证书颁发机构,生成新证书后,将其下载到 .crt 文件中。
在 MMC 控制台中,右键单击 Personal/Certificates 并选择 All Tasks -> Import。选择响应文件并单击 Next。检查 Personal 存储是否已选中并单击 Next。单击 Finish。当收到导入成功的消息时,单击 OK。
双击新证书将其打开。检查证书是否显示为有效;如果无效,您可能需要导入证书颁发机构提供的中间 CA 证书。还要检查证书在常规选项卡上是否显示消息“您有一个与此证书对应的私钥”。
右键点击新证书,选择导出。点击下一步。选择导出私钥的选项,点击下一步。
在“导出文件格式”对话框中,PKCS#12 是唯一可用的选项;我使用了默认设置,即,我保留“如果可能,在证书路径中包含所有证书”选项,而保留所有其他选项未选中。单击“下一步”。(编辑:在 Server 2019 中,“启用证书隐私”选项也默认启用,这是描述在这里据我所知你最好保持启用状态。)
选择使用您的用户帐户保护私钥的选项,然后单击下一步。输入文件名,然后单击下一步。收到导出成功的消息后,单击确定。(请注意,该文件将默认保存到您导入证书文件的同一位置。)
返回服务器管理器和部署属性向导,选择“RD 连接代理 - 启用单点登录”选项,然后单击“选择现有证书”。选择导出的 .pfx 文件,然后选择必需的“允许将证书添加到目标计算机上的受信任的根证书颁发机构证书存储”选项。单击确定。单击应用。
注意:为了使证书在客户端连接时可用,您必须为“启用单点登录”选项安装它,而不是像我最初假设的那样为“发布”选项安装它。(您实际上不必使用SSO,您可以在客户端通过组策略配置是否尝试SSO。)
正如所描述的这里,您可以通过服务器的 IP 地址而不是名称进行连接,最轻松地检查向客户端提供什么证书。
其他参考资料:
配置证书和单点登录,尤其是题为“创建证书的常见错误”的部分。