rdpsign 失敗並出現錯誤 0x80092004
在執行 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。
我將沒有私鑰的證書導出到 base-64 編碼的 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
我發現網上幾乎沒有任何與此問題相關的內容。任何人都可以建議嗎?
我猜參數名稱具有誤導性。似乎假設它將使用 SHA-256 算法對文件進行簽名,但接受 SHA-1 證書指紋作為值。
在Windows 10機器上測試rdpsign.exe並能夠使用具有簽名雜湊算法 SHA-256 的已安裝證書的 SHA-1 指紋對 RDP 文件進行簽名。如果您的證書可以對其進行簽名,則應使用以下命令進行簽名。
rdpsign.exe /sha256 02e55295aa2d9fa5fbad82970e665da973db00ca <rdp file path>
當我使用具有 SHA-1 簽名算法的舊證書時,rdpsign.exe 會生成錯誤:
無法使用為簽名指定的證書。錯誤程式碼:0x8007000d rdp 文件無法簽名。錯誤程式碼:0x8007000d