我正在尝试使用 wmic 方法为 Windows Server 2012 VM 上的远程桌面分配自签名证书,如所述这里和这里。
RDP 证书的 CA 已安装在本地计算机 > 受信任的根证书颁发机构下,并且 RDP 证书本身已安装在本地计算机 > 远程桌面下。
当我尝试发出 wmic 命令以使用导入的 RDP 证书时,收到以下错误:
C:\Windows\system32> wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="3c7a7a78af9699b69182dff15329834113a518b3"
Updating property(s) of '\\SERVER\root\CIMV2\TerminalServices:Win32_TSGeneralSetting.TerminalName="RDP-Tcp"'
ERROR:
Description = Invalid parameter
...我也尝试在本地计算机>个人下导入 RDP 证书,但错误消息保持不变。
答案1
同一个问题困扰了我 3 个小时,但找到了问题的根源。在我的案例中,“无效参数”错误的原因是我错误地导入了证书没有相应的私钥。
因此,请确保当您在“常规”选项卡中打开证书时,您会在最后一行看到一个钥匙符号和文本“您有一个与此证书相对应的私钥”。 带有私钥的证书
将证书和密钥组合成 pfx 文件非常简单。请看这里https://www.ssl.com/how-to/create-a-pfx-p12-certificate-file-using-openssl/
答案2
尝试将指纹字母大写,而不是小写。在 Server 2012 R2 中,出于某种原因,wmic 命令的指纹中不接受小写字符,因此例如 d8f87e2cff8fcc5789f53b5539fc12a0b5eecba8 应该是 D8F87E2CFF8FCC5789F53B5539FC12A0B5EECBA8。
对于我来说,获取“应有”指纹的最简单方法是打开 powershell 并使用以下命令获取指纹:
Get-Childitem Cert:\LocalMachine\My
它将显示本地机器证书的指纹,不带空格和大写字母。
无论如何,看看这篇文章,它真的很好:https://ryanmangansitblog.com/2013/03/10/configuring-rds-2012-certificates-and-sso/
答案3
尝试总结清单,因为有很多种方式可能会发生这种情况。
- 确保你在以下环境中运行 powershell/命令提示符管理权限如上所述这个答案
- 确保导入证书使用私钥。 查看Dmitriy 的回答
- 确保在尝试导入证书时,导入到机器账户->个人。 请参阅这个博客。
- 我还没有遇到过这个问题,但有人可能遇到过,将指纹更改为首都。 检查埃里克的回答。
- 如果你和其他人遇到同样的问题就像瑞安说的,运行它的 Powershell 版本。
- 如果您使用记事本作为缓冲区来删除指纹中的空格,请确保您已删除了 ASCII指纹开头的符号。如所述这篇由 MS 撰写的支持文章。
希望这可以解决你的问题:D
答案4
发现上面的命令没有按预期工作。手动输入命令后,它工作了,不知道发生了什么,但以防万一,这是我使用的
$TSGS = Get-WmiObject -Class "Win32_TSGeneralSetting" -Namespace "root\cimv2\terminalservices"
Set-WmiInstance -Path $TSGS -Arguments @{SSLCertificateSHA1Hash="4adcffbcf35ba044d93108ae2e2c51fa3c3fc983"}