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