Software de Assinatura Digital - certificado de assinatura automática

1

Gostaria de experimentar a assinatura de um executável de software. Receio que haja algo que me escape.

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

Eu criei um certificado autoassinado:

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

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": link

Sucesso.

(Nota: 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 - estou apenas supondo que eu deveria fazer isso.)

Eu corro certmgr c:\folder\my_installer.exe

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

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

Então, o que mais eu preciso fazer para que a caixa desapareça ou diga "Minha empresa Inc." para o produtor? E isso é apenas para a máquina local, fazendo tudo à mão ...

Para testes reais, 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 eu digo ao cliente sobre a chave ou o certificado ou o que for? Eu copio o arquivo cer junto com o exe? Eu tenho que colocá-lo em um lugar especial? Copio outros arquivos? Eu tenho que 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 ...

Estou assumindo que, se eu comprar um certificado real da Verisign por exemplo, ele seria autenticado pela web e eu não precisaria 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 confusa quanto quando comecei - talvez cada uma delas tivesse suposições de algum conhecimento prévio ...

    
por Thalia 17.08.2012 / 19:01

1 resposta

2

Ele não "autentica pela Web" (exceto, talvez, a verificação da CRL (Lista de Certificados Revogados)) - 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, eles são um conjunto de dados estáticos no disco rígido que não são (facilmente) modificáveis.

A maneira de tirar a caixa irritante é:

  • Confie na sua CA de assinatura de serpentes (geralmente uma má ideia, mas vai funcionar); ou
  • Obtenha um contrato assinado por uma autoridade de certificação raiz pública confiável ou um de seus intermediários.

Você citou a Verisign. Boa. 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 você teria que fazer com que seus clientes confiassem em sua autoridade de certificação raiz, o que acaba com o objetivo na maioria das situações. Por isso, 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.

    
por 17.08.2012 / 22:09