在运行 Windows Server 2016 的 RDSH 服务器上,安装了以下证书:
- 由...发出:
COMODO RSA Domain Validation Secure Server CA
- 发给:
*.internal.<Internet domain name>
- 有效期:2017/07/18
- 有效期至: 2018/07/19
- SHA-1 指纹:
02 e5 52 95 aa 2d 9f a5 fb ad 82 97 0e 66 5d a9 73 db 00 ca
- 私钥:是
我们需要使用上述证书签署 RDP 文件,研究强烈建议使用 rdpsign。
我执行了rdpsign -?
输出以下内容的命令:
NAME
rdpsign [options] [items to sign]
OPTIONS
/sha256 HASH
Specified the SHA256 hash of the signing certificate.
/q
Quiet mode: No output when success, minimal output when failed.
/v
Verbose mode: Display all warnings, messages, and status.
/l
Test signing and output results without actually replacing any of the inputs. Ignores when input files are on stdin.
All rdp file(s) have been succesfully signed.
因此,与官方的、现已过时的文档,rdpsign
需要证书的 SHA-256 哈希。
但是,IIS 管理器和证书管理器仅提供证书的 SHA-1 指纹。
https://knowledge.symantec.com/support/identity-protection-support/index?page=content&id=SO28771&actp=RSS&viewlocale=en_US建议使用 OpenSSL 获取证书的各种哈希值,包括 SHA-256。
我将不包含私钥的证书导出为 base64 编码的 X.509 CER 文件。
我执行了openssl x509 -noout -fingerprint -sha1 -inform pem -in <file name>.cer
输出以下内容的命令:
SHA1 Fingerprint=02:E5:52:95:AA:2D:9F:A5:FB:AD:82:97:0E:66:5D:A9:73:DB:00:CA
因此,我们可以确信 OpenSSL 输出的信息是准确的,因为 SHA-1 指纹匹配。
我执行了openssl x509 -noout -fingerprint -sha256 -inform pem -in <file name>.cer
输出以下内容的命令:
SHA256 Fingerprint=D7:44:A5:BA:94:56:B0:9F:26:D2:2B:88:92:84:11:74:35:23:71:87:30:FD:CE:D0:B1:35:6B:D8:DA:A6:A1:7B
我执行了提升的(以管理员身份运行)命令rdpsign /sha256 D744A5BA9456B09F26D22B88928411743523718730FDCED0B1356BD8DAA6A17B <file name>.rdp /v
,,rdpsign /sha256 "D744A5BA9456B09F26D22B88928411743523718730FDCED0B1356BD8DAA6A17B" <file name>.rdp /v
并且rdpsign /sha256 d744a5ba9456b09f26d22b88928411743523718730fdced0b1356bd8daa6a17b <file name>.rdp /v
所有命令均输出以下内容:
Unable locate the certificate specified. Error Code: 0x80092004
The rdp file could not be signed. Error Code: 0x80092004
我发现网上几乎没有关于这个问题的资料。有人能给出建议吗?
答案1
我猜这个参数名称有点误导。它似乎假设使用 SHA-256 算法对文件进行签名,但接受 SHA-1 证书指纹作为值。
已测试rdpsign 工具在Windows 10机器,并能够使用已安装证书的 SHA-1 指纹(该证书具有签名哈希算法 SHA-256)对 RDP 文件进行签名。如果您的证书可以对其进行签名,则以下命令应该可以执行此操作。
rdpsign.exe /sha256 02e55295aa2d9fa5fbad82970e665da973db00ca <rdp file path>
当我使用具有 SHA-1 签名算法的旧证书时,rdpsign.exe 会生成错误:
无法使用指定的证书进行签名。错误代码:0x8007000d 无法对 rdp 文件进行签名。错误代码:0x8007000d
答案2
根据微软文章 远程桌面侦听器证书配置...
在运行 wmic 命令之前,必须将要使用的证书导入到计算机帐户的个人证书存储中。如果不导入证书,您将收到无效参数错误。
意义:
点击星级菜单,输入certlm.msc
然后按 Enter 打开证书本地计算机。
选择个人商店并右键单击进口 .pfx
或.p12
证书。
导入后,双击证书,单击“详细信息”选项卡,然后向下滚动到“指纹字段”。