我跟着
使用适当的证书而不是自签名的 Windows 证书来保护 RDP。这一切都很顺利。直到我运行
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="MY_HASH"
此命令只会导致“无效参数”。
相同的命令可以很好地处理原始(自签名 Windows)证书的哈希值。所以我猜我的证书一定出了问题。它似乎已正确安装在证书存储区中(使用私钥和“Remotedesktop”子部分下)。
查看认证 MMC 管理单元中的证书详细信息,我导入的证书旁边有一个黄色感叹号:
密钥用途 = 数字签名,密钥加密(a0)
以及附加字段
基本限制 = 请求者类型:终端单位
而 Windows 为 RDP 连接生成的自签名证书具有:
密钥用途 = 密钥加密、数据加密(30)
有什么办法可以改变这种情况吗,或者根本就不能将此证书用于 RDP?
一些附加信息:
- 该证书是 COMODO PositiveSSL Wildcard 证书,
- 在将证书导入 Windows 证书存储区之前,我使用 OpenSSL 将证书从原始 PEM 格式转换为 PKCS7,并从 PKCS7 转换为 PKCS #12/PFX,
- 证书之间的另一个区别是,Windows 证书是 sha1 证书,而 Comodo 证书是 sha256 证书。
- 这是一台 Win10 工作站,
- 该工作站不是任何域的成员,而是一个独立安装。
答案1
恐怕我必须回答我自己的问题,答案似乎是不。使用该命令openssl x509 -in cert.crt -purpose -noout -text
发现,Comodo 提供的原始证书已经缺少该字段所需的标志Key Usage
。它没有该Data Encipherment
功能。
Comodo 证书如下所示:
X509v3 Key Usage: critical
Digital Signature, Key Encipherment
X509v3 Basic Constraints: critical
CA:FALSE
X509v3 Extended Key Usage:
TLS Web Server Authentication, TLS Web Client Authentication
而 Windows 自签名证书具有以下标志:
X509v3 extensions:
X509v3 Extended Key Usage:
TLS Web Server Authentication
X509v3 Key Usage:
Key Encipherment, Data Encipherment
答案2
我不知道您是否仍然需要这个问题的答案,但如果任何人仍然需要它,那么您可以在这里找到它。
您确实不需要您指定的属性。
按照这篇文章中的步骤,您将成功在计算机/域控制器上安装任何 CRT(通配符或普通)。
我没有在没有 AD CS 的情况下进行测试,但我认为它是有效的。
您唯一需要做的就是使用密钥和包将 CRT/p7b 转换为 cer,然后转换为 pfx (pkcs12)。然后手动将其导入到您的操作系统中。
https://www.sslshopper.com/ssl-converter.html- 您可以在这里找到如何转换证书。
顺便说一句,您可以跳过 WMI 脚本部分,并使用具有管理权限的 powershell 中的以下命令:
wmic /namespace:\\root\cimv2\TerminalServices PATH Win32_TSGeneralSetting Set SSLCertificateSHA1Hash="YOUR-THUMBPRINT-GOES-HERE"
它在 Windows Server 2016/Windows 10 上对我有用。
希望能帮助到你! :)