当前位置: 首页 > backend >正文

Windows 远程桌面添加 SSL 证书指南

Windows 远程桌面添加 SSL 证书指南

    • 🧾 准备工作
    • 🔐 第一步:使用 Certbot 申请 SSL 证书
    • 📦 第二步:生成 PFX 格式证书文件
    • 📁 第三步:导入证书到 Windows 证书管理器
    • 🔒 第四步:分配证书权限
    • 🧬 第五步:配置注册表绑定 SSL 证书
      • ⚙️ 编辑注册表数据值替代方式:使用 WMIC 设置证书指纹
    • ✅ 最后验证
    • 📝 总结

在企业或个人远程办公场景中,使用 SSL 证书为 Windows 远程桌面(RDP)服务加密通信是非常有必要的。本文将详细介绍如何通过 Let’s Encrypt 获取 SSL 证书,并将其配置到 Windows 远程桌面服务中。


🧾 准备工作

  • 已启用远程桌面功能的 Windows 系统(如 Win10 Pro、Win Server)
  • 具备域名解析能力(用于申请 Let’s Encrypt 证书)
  • 安装 Docker 环境(用于运行 Certbot)

🔐 第一步:使用 Certbot 申请 SSL 证书

我们使用 certbot 的 DNS 手动验证方式申请通配符证书(支持泛域名):

docker run -it --rm \-v /home/docker-nginx/cert:/etc/letsencrypt \-v /home/docker-nginx/log:/var/log/letsencrypt \certbot/certbot certonly \--manual \--preferred-challenges=dns \--server https://acme-v02.api.letsencrypt.org/directory \-d "*.你的域名" -d "你的域名" \--agree-tos \--email 你的邮箱

manual模式执行过程中需要在DNS处手动添加 TXT 记录完成域名所有权验证。


📦 第二步:生成 PFX 格式证书文件

Let’s Encrypt 默认提供的是 PEM 格式的私钥和证书文件,我们需要将其转换为 Windows 可用的 .pfx 格式:

openssl pkcs12 -export -out 自定义名称.pfx -inkey privkey.pem -in fullchain.pem -name "Certificate"

系统会提示你设置一个密码,请妥善保存。


📁 第三步:导入证书到 Windows 证书管理器

  1. 按下 Win + R 键,输入 mmc 打开控制台。
  2. 点击 文件 > 添加/删除管理单元
  3. 选择左侧 证书,点击 添加
  4. 选择 计算机账户,点击下一步,选择 本地计算机
  5. 点击 完成 > 确定
  6. 在左侧导航栏找到 证书(本地计算机) > 个人 > 证书
  7. 右键点击 所有任务 > 导入
  8. 浏览并选择你的 .pfx 文件,按照向导完成导入操作。

✅ 注意:证书存储建议选择“根据证书类型自动选择”。


🔒 第四步:分配证书权限

为了确保远程桌面服务可以访问该证书的私钥:

  1. 回到已导入的证书上,右键选择 所有任务 > 管理私钥。(刚导入后没有看到证书可以右键刷新下)
  2. 点击 添加,输入用户 NETWORK SERVICE
  3. 赋予 读取 权限。
  4. 点击确定完成权限配置。

🧬 第五步:配置注册表绑定 SSL 证书

  1. 按下 Win + R,输入 regedit 打开注册表编辑器。

  2. 定位路径:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
    
  3. 右侧空白处点击右键 > 新建 > REG_BINARY 类型项。

  4. 名称设为:SSLCertificateSHA1Hash

  5. 双击打开该项,在数据值中填入证书指纹(SHA1 值)。

💡 提示:指纹可在证书详细信息页查看,注意去除空格。


⚙️ 编辑注册表数据值替代方式:使用 WMIC 设置证书指纹

如果第五步无法编辑SSLCertificateSHA1Hash的值,可以在管理员权限的 CMD 或 PowerShell 中运行以下命令:

wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="证书指纹"

⚠️ 注意:

  • 必须以管理员身份运行
  • 确保远程桌面服务已启用
  • SHA1 指纹必须为 40 位十六进制字符串,无空格

✅ 最后验证

重启系统或远程桌面服务使配置生效:

Restart-Service TermService -Force

尝试使用新的 SSL 加密连接远程桌面,确认证书是否正常加载。正常加载后远程桌面上会显示一个小锁。


📝 总结

步骤内容
1️⃣使用 Certbot 申请 SSL 证书(DNS 验证)
2️⃣使用 OpenSSL 将证书转换为 .pfx 格式
3️⃣导入证书到 Windows 证书管理器
4️⃣分配 NETWORK SERVICE 用户对私钥的读取权限
5️⃣修改注册表或使用 WMIC 绑定证书指纹
6️⃣重启服务并测试 SSL 连接

📌 提示:

  • 如果你使用的是cloudflare、aliyun、google等域名,也可以结合脚本实现自动更新 TXT 解析记录。
    –dns-cloudflare(Cloudflare)
    –dns-aliyunsdk(阿里云)
    –dns-google(Google Cloud)
  • 若替代方式遇到 Invalid parameter 报错,请检查是否以管理员身份运行命令以及SSLCertificateSHA1Hash已添加成功。
http://www.xdnf.cn/news/14088.html

相关文章:

  • 2025虚幻人物模型积累
  • Ubuntu双系统迁移
  • (读转载文)AI发展的“上半场”与“下半场”
  • 分布假设学习笔记
  • 比特币---第1关:矿工任务及所需硬件
  • 使用 C++ 和 OpenCV 构建智能停车场视觉管理系统
  • C#最佳实践:推荐使用 nameof 而非硬编码名称
  • 地图布局进阶:插入属性表打开外部文件
  • ShaderToy:旋转风车(atan曲线)
  • 学生端前端用户操作手册
  • React SSR同构渲染方案是什么?
  • PDM网络图上的ES、EF、LS、LF是干嘛的怎么计算下一个节点的数值
  • 进程和线程的相关命令
  • Python 高级主题与性能优化指南
  • 爱普生RX8111CE实时时钟模块在汽车防盗系统中的应用
  • 声波下的眼睛:用Python打造水下目标检测模型实战指南
  • 使用Amazon Elastic Beanstalk部署高考倒计时Flask应用:完整实践指南
  • idea maven打包很慢,怎么提速-多线程
  • 2024开发者生态报告 | AI重构编程、语言新贵崛起与工具效率革命
  • 【免费分享】GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究
  • 通过示例解释 C# 中强大的 LINQ的集运算
  • python 将CAD的dwg转geoJson
  • 零基础学前端-传统前端开发(第四期-JS基础-运算)
  • 【C语言指南】数组作为函数参数的传递机制
  • 从零到一:构建企业级 Vue.js 3 组件库
  • Arcgispro底图突然加载失败解决办法+属性表中文乱码
  • k8s从入门到放弃之k3s轻量级
  • 第四届智能电网与能源系统国际学术会议(SGES 2025)
  • Hive 序列化与反序列化:数据的 “打包“ 与 “拆箱“ 艺术
  • Angular入门的环境准备步骤工作