Software de assinatura digital - certificado de autoassinatura

Software de assinatura digital - certificado de autoassinatura

Gostaria de experimentar assinar um executável de software. Tenho medo de que haja algo que me escape.

Vou chegar ao ponto de adquirir um certificado de uma CA, mas antes disso gostaria de saber o que estou fazendo, então fiz um teste:

Criei um certificado autoassinado:

makecert -r -ss myPrivateCert -sk c:\test -n "CN=My Company Inc." testCert.cer

em seguida, assinou um executável:

signtool sign /v /s myPrivateCert /n "My Company Inc." /t http://timestamp.verisign.com/scripts/timstamp.dll c:\folder\my_installer.exe

Para ambos os comandos, obtive sucesso.

Etapa 3: "Instalar o certificado de teste":http://msdn.microsoft.com/en-us/library/bb756995

Sucesso.

(Observação: na pasta c:\test, coloquei certificados baixados da lista de certificados cruzados sugerida pela Microsoft, como VeriSign Class 3 Public Primary Certification Authority - G5.cer- só estou supondo que deveria fazer isso.)

eu corrocertmgr c:\folder\my_installer.exe

e recebi uma lista de 3 certificados que adicionei, com Assunto, Emissor, Número de série... (da My Company Inc. e Verisign), então aparentemente está tudo bem.

Mesmo depois disso, se eu clicar duas vezes no instalador (ou no executável), recebo a mensagem do UAC sobre Editor desconhecido...

Então, o que mais preciso fazer para que essa caixa desapareça ou diga "My Company Inc." para produtor? E isso é só para a máquina local, fazendo tudo manualmente...

Para testar de verdade, estou assumindo que meu cliente é um ambiente VirtualBox... então? O próximo passo: mover o instalador em um VirtualBox e executá-lo?

Mas como posso informar ao cliente sobre a chave ou certificado ou algo assim? Copio o arquivo cer junto com o exe? Tenho que colocá-lo em um lugar especial? Copio algum outro arquivo? Preciso executar o mmc novamente? Os usuários terão que fazer algo assim? Porque parece extremamente complicado, do ponto de vista do usuário... Isso é muito confuso...

Presumo que, se eu comprar um certificado real da Verisign, por exemplo, ele será autenticado pela web e eu não precisarei fazer mais nada (exceto os dois comandos acima, menos o -r)?

Encontrei muitas instruções sobre isso na web, mas cada uma me deixou tão confuso quanto quando comecei - talvez cada um deles tivesse suposições de algum conhecimento prévio...

Responder1

Ele não "autentica pela web" (além, talvez, de verificar a Lista de Revogação de Certificados (CRL)) - as CAs raiz são conectadas ao sistema operacional e instaladas pelo Windows Update ou pelo disco de instalação do sistema operacional . Em outras palavras, são um conjunto de dados estáticos no disco rígido que não é (facilmente) modificável.

A maneira de fazer com que a caixa irritante desapareça é:

  • Confie na sua CA de assinatura do Snakeoil (geralmente é uma má ideia, mas funcionará); ou
  • Faça com que ele seja assinado por uma CA raiz oficial de confiança pública ou por um de seus intermediários.

Você citou a Verisign. Bom. Eles são um dos vários provedores possíveis para fornecer um certificado de assinatura de código. A caixa ainda está aparecendo porque, AFAIK, o Windows está programado para exibir automaticamente o aviso para todos os certificados autoassinados. Se você tentasse gerar um CSR com base em sua própria CA raiz criada, você poderia fazer com que a caixa desaparecesse confiando em sua CA raiz, e isso funcionaria. Mas então você teria que fazer com que seus clientes confiassem em sua CA raiz, o que vai contra o propósito na maioria das situações. Conseqüentemente, a rede de confiança pública é o caminho mais fácil. O fornecedor geralmente fornece instruções explícitas sobre como usar o serviço e como assinar seu código.

informação relacionada