Signtool não pode fazer assinatura SHA256 no Windows 7

5

Estou usando a assinatura SHA1 há muitos anos, mas a partir de 2016, o Windows está forçando os desenvolvedores a usar o SHA256.

Windows Enforcement of Assinatura de código do Authenticode e registro de data e hora

Usando o Windows 7 SDK signtool, as funções para assinar SHA-256 são "comandos desconhecidos", portanto, esta signtool é obsoleta como signtool e não deve mais ser usada.

Para assinar com o SHA256, baixei o SDK do Windows 8.1 para obter o signtool.exe que recebeu as novas funções (/ fd e outros). O arquivo BAT e o signtool funcionam no Windows 8 e 10, por isso sei que funciona, mas falha no Windows 7 quando tenta registrar o arquivo de hora.

Euusoumarquivobatparaassinararquivos,queseparececomisso(euediteioarquivoBATparaqueelenãomostrevariáveis,caminhoscompletos,nomedaempresaesenhas):

Path\signtool.exesign/f"Path\Certificate.p12" /fd sha256 /p *password* /du "URL" /tr "timestampServer?td=sha256" /td sha256 /d "Product name" "Filename"

Eu acho, eu não tenho o SDK adequado para suportar algumas das funções, mas não consigo encontrar nenhuma informação na internet sobre como configurar isso no Windows 7. Eu tentei instalar o MS Visual C ++ 2015 Redistributable (x64), mas ainda não resolveu o problema.

    
por Frank Jelstrup 08.02.2016 / 11:49

3 respostas

4

Eu finalmente encontrei uma solução para a assinatura dupla de arquivos no Windows 7.

O truque é usar o SDK do Windows 8 ( não 8.1 ou 10 )! Eu usei este download: link

No Windows 7 x64, certifique-se de apontar para o binário x64 ( ....0\bin\x64\signtool.exe )

Como bônus, aqui está um script em lote confortável que eu fiz. Basta salvá-lo como doublesign.bat e arrastar um arquivo que você deseja assinar nesse arquivo bat.

@ECHO OFF

set signtool="C:\path to signtool\signtool.exe"
set certfile="C:\path to certificate\cert.p12"
set certpass="Password"
set company="Optional"

echo Signing with SHA-1
%signtool% sign /f %certfile% /p %certpass% /t http://timestamp.comodoca.com/authenticode %1
timeout /T 3
echo. & echo Signing with SHA-256
%signtool% sign /f %certfile% /p %certpass% /as /fd sha256 /tr http://timestamp.comodoca.com/rfc3161 /td sha256 %1

@PAUSE
    
por 01.07.2016 / 16:47
1

A questão é realmente mais simples.

O problema está no servidor de registro de data e hora.

Em vez de usar signtool.exe com isso

/t http://timestamp.comodoca.com 

Você precisa usá-lo assim para o SHA1

/tr http://timestamp.comodoca.com /td sha1

E para o SHA256

/tr http://timestamp.comodoca.com/?td=sha256 /td sha256
    
por 15.01.2017 / 00:33
0

Parece que eu não sou bom em ler, também estou respondendo a minha própria pergunta, pois os outros podem achar difícil encontrá-la, assim como eu.

O Windows não suporta mais o signtool.exe no Windows 7, e é por isso que as funções antigas / obsoletas como a assinatura SHA-1 ainda estão funcionando, mas o registro de data e hora SHA-256 é um problema. Eu encontrei isso no MSDN:

Quote from MSDN: Note You can only use SignTool to sign your Windows Store app packages on Windows 8 and later or Windows Server 2012 and later. You can't use SignTool to sign app packages on down level operating systems such as Windows 7 or Windows Server 2008 R2.

Se você quiser ler tudo, veja aqui:

Como assinar um pacote de aplicativos usando o SignTool

    
por 10.02.2016 / 16:57