我正在 Ubuntu 中设置 RDP 连接,并尝试通过 Microsoft 的远程桌面连接从另一台 Windows 计算机访问它。设置很好,使用用户名和密码可以正常工作。
但是,我们希望确保只有在指定证书(非常类似于 SSH 中使用的公钥-私钥对)并输入密码时才允许使用 RDP,从而确保其安全。
我在我的 Ubuntu 机器上运行了以下命令(未使用密码):
openssl req -x509 -newkey rsa:2048 -keyout private.key -out public.cert -days 365
它生成了一个证书文件和一个密钥文件,我正尝试在 XRDP 的 ini 文件中使用它们(/etc/xrdp/xrdp.ini
)以及设置中的一些其他更改:
在此处输入图片描述
此后我重新启动服务:
sudo systemctl restart xrdp
但即便如此,我仍可以通过 Windows 10 的 RDP 连接到计算机,并且它不会要求提供任何证书,并显示它是安全的。如果它要求提供证书,我也不知道如何提供,因为远程桌面连接。
请帮助我解决这个问题,如何在 xrdp 上安装证书以确保其安全。
答案1
看起来您已经使用 OpenSSL 生成了自签名证书,但 XRDP 未配置为使用此证书进行身份验证。要让 XRDP 使用您生成的证书进行安全的 RDP 连接,您需要更新其配置以指向生成的密钥和证书文件。
您需要执行以下操作:
- 更新 XRDP 配置:编辑 XRDP 配置文件 /etc/xrdp/xrdp.ini 并指定生成的密钥和证书文件的路径。在文本编辑器中打开该文件,找到 [ssl] 部分。更新 key_file 和 cert_file 参数以分别指向 private.key 和 public.cert 文件的位置。
[ssl] ... key_file=/路径/到/private.key cert_file=/路径/到/public.cert
- 重新启动 XRDP 服务:将更改保存到 xrdp.ini 后,重新启动 XRDP 服务以应用新配置:
sudo systemctl 重新启动 xrdp
使用远程桌面连接进行连接:现在,当您尝试使用远程桌面连接从 Windows 连接到 Ubuntu 计算机时,它会提示您选择证书。您需要事先将公共证书 (public.cert) 导入 Windows 证书存储区。导入证书后,当您使用远程桌面连接进行连接时,它应该会显示该证书进行身份验证。
证书验证:为了确保只允许具有有效证书的连接,您可能还需要配置 XRDP 以要求客户端证书。这可以通过在 xrdp.ini 的 [ssl] 部分中设置 require_client_cert=yes 来实现。
[ssl]...require_client_cert=yes
通过此配置,XRDP 将只允许来自出示有效证书的客户端的连接。
附言:如果您正在探索 Linux 上 RDP 服务器的替代方案,您可能需要考虑 ThinLinc。ThinLinc 提供强大的远程桌面解决方案,其功能专为安全高效的远程访问而设计。