我为一家小公司安装了 Windows Server 2016,因此我不需要在此安装中安装域控制器,对于 RDS,我只需要 RD 许可和 RD 会话主机角色。但只有这些角色才没有远程桌面网关,许多教程都使用它在终端服务器上安装 SSL 证书(例如:https://ryanmangansitblog.com/2013/03/27/deploying-remote-desktop-gateway-rds-2012/)。
所以总结一下,我只是没有远程桌面网关的界面来安装 SSL 证书。
有什么解决方法可以解决这个问题并在我的 RDS 上安装 SSL 证书吗?
答案1
最后我找到了解决办法!
- 首先,必须通过添加 DNS 后缀来更改服务器的名称。例如,如果您想通过 srv.example.com 地址连接到服务器,您的服务器名称应该是“srv”,DNS 后缀应该是“example.com”。可以在计算机属性中完成。
- 然后在“RD 许可管理器”中设置许可
- 现在向域名srv.example.com颁发证书(即在Let's encrypt中)
- 通过以下方式将 let's encrypt 证书文件转换为 Windows 证书:
openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem
(Linux 命令)如果您在 acme.sh 的帮助下颁发了证书,则命令应如下所示:openssl pkcs12 -export -out certificate.pfx -inkey yourdomain.com.key -in yourdomain.com.cer -certfile fullchain.cer
- 安装转换后的证书到个人的存储在计算机级别。不在用户级别
- 然后使用此命令显示证书的指纹,将其复制到文本文件或类似文件:
Get-ChildItem "Cert:\LocalMachine\My"
- 这是一个用于设置 RD 会话主机 RDP 侦听器的 WMI 路径的变量(需要更改证书的位置):
$PATH = (Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices)
- 最后,这是更改 RDP 侦听器上的活动证书的命令:
Set-WmiInstance -Path $PATH -argument @{SSLCertificateSHA1Hash="thumbprint"}
上面的“指纹”是您之前记下的值,只需将其插入“之间即可。 - 做得好!现在您拥有带有自定义 SSL 证书的 RDP 服务器,无需安装 RD 网关 致谢
答案2
启动 certlm.msc 并将证书导入“个人 -> 证书”存储。安装后,启动服务器管理器并选择左侧的远程桌面角色图标。单击“部署概述”部分中的“任务”下拉菜单,然后单击出现的上下文菜单中的“编辑部署属性”。您可以通过单击“选择现有证书”按钮将导入的证书分配给角色。
无论您是否安装了网关角色,您仍然应该配置证书设置。
答案3
在 MS 社区的帮助下我找到了部分解决方案:https://www.risual.com/2014/03/10/setting-up-a-2012-r2-rds-gateway-for-a-workgroup/. 本文摘要:要使许可证服务器仅向 Internet 地址(如 srv.example.com)颁发证书,而不仅仅是“example”(计算机名称),应在计算机属性中添加 DNS 后缀:
顺便说一句,问题仍然存在,因为 RDP 连接的服务器仍然使用自颁发的证书(即使我删除了它,只留下 let'sencrypt 证书)。每次重新启动 RD 服务时,它都会颁发新的证书,而不是使用我的证书。我怎样才能使用 lets encrypt 证书?
当然,我知道,我可以导出自生成证书的公钥并将其添加到员工的电脑中,但在我看来这不是好的解决方案。