Como posso assinar um controle ActiveX com um certificado de assinatura de código e ser um editor verificado?
-
26-09-2019 - |
Pergunta
Estou tentando assinar um controle ActiveX com um certificado de assinatura de código emitido pela Thawte. Consegui assinar com êxito o controle usando o SignTool.exe.
Quando olho para as propriedades do arquivo, ele diz "o certificado na assinatura não pode ser verificado".
Quando vejo o certificado, ele diz "o Windows não possui informações suficientes para verificar o certificado".
Na guia Caminho de certificação, diz que "o emissor deste certificado não pode ser encontrado".
No Internet Explorer, o certificado é reconhecido como assinado, mas o usuário recebe avisos de que o editor não é verificado.
Tentei criar um único arquivo PFX que contém meu certificado, juntamente com os certificados raiz e intermediário, essa cadeia para o meu certificado de desenvolvedor de Thawte e, em seguida, assinando o controle usando esse arquivo PFX. Sem dados.
Alguma sugestão?
Solução
A pergunta realmente contém o procedimento correto- faça a assinatura usando um arquivo PFX que contém o certificado raiz, o certificado intermediário, o certificado de desenvolvedor e a chave privada. Além disso, use um servidor de data e hora. Meu problema era que eu tinha o certificado raiz errado incluído no meu PFX, para que o certificado usado para assinar não pudesse voltar à raiz.
Por solicitação, aqui estão as informações sobre como criar o arquivo PFX. O Cert2SPC e o PVK2PFX que eu uso abaixo também estão no SDK da plataforma.
cert2spc certpath1.cer certpath2.cer certpath3.cer codesign.spc
Onde a lista de arquivos .Cer inclui os certificados raiz, intermediário e de assinatura de código, e o codesign.spc é o arquivo de saída. Então:
pvk2pfx -pvk privkey.pvk -spc codesign.spc
A execução do PVK2PFX dessa maneira inicia um assistente que solicita a senha de chave privada e a localização do arquivo de saída e a senha do arquivo de saída.
Finalmente, o SignTool faz a assinatura de código real:
signtool sign /f my_certificates.pfx /p my_passphrase /t http://timestamp.verisign.com/scripts/timstamp.dll my_activex_control.ocx
Em retrospecto, eu poderia ter economizado tempo usando o SignCode.exe, também conhecido como o assistente de assinatura de código (que eu acho que faz parte do .NET SDK) que usa arquivos .spc e .pvk diretamente.