rdpsign falha com erro 0x80092004

2

Em um servidor RDSH executando o Windows Server 2016, o seguinte certificado é instalado:

  • Emitido por: COMODO RSA Domain Validation Secure Server CA
  • Emitido para: *.internal.<Internet domain name>
  • Válido a partir de: 2017/07/18
  • Válido para: 2018/07/19
  • impressão digital SHA-1: ‎02 e5 52 95 aa 2d 9f a5 fb ad 82 97 0e 66 5d a9 73 db 00 ca
  • Chave privada: sim

Precisamos assinar um arquivo RDP usando o certificado acima e a pesquisa sugere strongmente o uso do rdpsign.

Eu executei o comando rdpsign -? , que forneceu o seguinte:

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.

Então, ao contrário de a documentação oficial e agora obsoleta , rdpsign requer o hash SHA-256 do certificado.

No entanto, o Gerenciador do IIS e o Gerenciador de certificados oferecem apenas impressões digitais SHA-1 de certificados.

link informa que o OpenSSL pode ser usado para obter vários hashes de um certificado, incluindo o SHA-256.

Eu exportei o certificado sem sua chave privada para um arquivo CER X.509 codificado na base 64.

Eu executei o comando openssl x509 -noout -fingerprint -sha1 -inform pem -in <file name>.cer , que forneceu o seguinte:

SHA1 Fingerprint=02:E5:52:95:AA:2D:9F:A5:FB:AD:82:97:0E:66:5D:A9:73:DB:00:CA

Portanto, podemos ter certeza de que o OpenSSL está exibindo informações precisas porque as impressões digitais SHA-1 são compatíveis.

Eu executei o comando openssl x509 -noout -fingerprint -sha256 -inform pem -in <file name>.cer , que forneceu o seguinte:

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

Eu executei comandos elevados (executar como administrador) rdpsign /sha256 D744A5BA9456B09F26D22B88928411743523718730FDCED0B1356BD8DAA6A17B <file name>.rdp /v , rdpsign /sha256 "D744A5BA9456B09F26D22B88928411743523718730FDCED0B1356BD8DAA6A17B" <file name>.rdp /v e rdpsign /sha256 d744a5ba9456b09f26d22b88928411743523718730fdced0b1356bd8daa6a17b <file name>.rdp /v , todos com os seguintes resultados:

Unable locate the certificate specified.  Error Code: 0x80092004
The rdp file could not be signed.  Error Code: 0x80092004

Descobri que quase não há nada relevante on-line para esse problema. Alguém pode aconselhar?

    
por mythofechelon 26.07.2017 / 17:44

1 resposta

2

Eu acho que o nome do parâmetro é enganoso. Parece assumir que usará o algoritmo SHA-256 para assinar o arquivo, mas aceita a impressão digital do certificado SHA-1 como um valor.

Testou rdpsign.exe na máquina Windows 10 e conseguiu assinar um arquivo RDP usando uma impressão digital SHA-1 de um certificado instalado que possui SHA- Algoritmo Hash de assinatura. 256 Se o seu certificado puder assiná-lo, o seguinte comando deverá fazê-lo.

rdpsign.exe /sha256 02e55295aa2d9fa5fbad82970e665da973db00ca <rdp file path>

Quando eu uso um certificado mais antigo que tem o algoritmo de assinatura SHA-1, o rdpsign.exe gera o erro:

Unable to use the certificate specified for signing. Error Code: 0x8007000d The rdp file could not be signed. Error Code: 0x8007000d

    
por 27.07.2017 / 14:51