No Windows Vista, quando o usuário tem o UAC ativado e vai instalar um aplicativo, uma confirmação é solicitada. Se seu aplicativo não possuir uma assinatura digital, uma tela bem ameaçadora de aviso é mostrada ao usuário dizendo que um programa não identificado precisa da sua autorização para ser executado. Avisos parecidos também aparecem em diversos outros momentos, como quando se tenta executar um programa por uma caminho de rede.
Uma forma de amenizar esses alertas ao usuário é assinar digitalmente seus aplicativos. A assinatura digital teoricamente garante ao usuário que o arquivo veio realmente da empresa desenvolvedora, e mostra telas bem mais amigáveis, mostrando o nome da sua empresa como origem do aplicativo.
Isso mostra que toda empresa de software deveria assinar seus aplicativos. E foi isso que nós implementamos aqui nos últimos dias e vou dar algumas dicas de como fazer.
- Você precisa comprar um certificado digital de uma entidade certificadora de confiança da Microsoft. Eu comprei da Comodo através da K Software. Segui os procedimentos descritos na própria página e foi tranquilo. Utilizei o Internet Explorer durante todo o processo, pois no Chrome não foi legal.
- Após compra você vai receber um e-mail solicitando os documentos da empresa para comprovar que ela existe e que você é o responsável. Eu mandei o cartão CNPJ da empresa impresso em PDF pelo site da Receita Federal.
- Eles também pedem um telefone pois dizem que vão te ligar, mas não me ligaram.
- Depois de um ou dois dias recebi o e-mail dizendo que o certificado estava pronto, com o link para baixar. Utilizei o Internet Explorer 8 e seguindo as instruções, o certificado foi instalado na minha máquina.
- Como eu iria fazer a assinatura durante nosso processo de build, precisava copiar o certificado para nossa máquina de build. Então exportei o certificado, entrando em Opções de Internet, Conteúdo, Certificados. Dessa forma foi gerado um arquivo .pfx, que é exatamente o que o FinalBuilder precisa na sua action Authenticode para aplicar assinaturas.
- Também é necessária uma URL da entidade certificadora para aplicar timestamp nos arquivos. Isso geralmente está nas páginas de FAQ da entidade. Como aqui no caso da Comodo.
- Copiei o arquivo .pfx para minha máquina de build, apontei o FinalBuilder para ele, configurei a URL de timestamp e pronto, meus arquivos (*.exe) estão todos assinados!
- Que eu saiba não existe limite e você pode assinar quantos arquivos quiser durante a validade do seu certificado.
- Nós assinamos todos executáveis (*.exe), incluindo instaladores.
- Também é possível assinar outros tipos de arquivos, mas como eu não fiz, não tenho dicas a respeito.
- Para quem não usa FinalBuilder, precisa pesquisar como fazer sem ele, pois eu não fui atrás disso. Na página da K Software existe propaganda de uma ferramenta para assinar, mas tenho certeza que ou existem aplicativos no próprio Windows para isso, ou gratuítos em algum lugar para baixar.
Espero que isso ajude um pouco.
TPodcast
10 Comments
Bem explicado, hein?!
Só acho que faltou 1 print-screen do windows reclamando do exe normal e do assinado pro pessoal ver a diferença.
Parabéns pelo post e pela iniciativa da Cadena.
Abraço
Muito bom o post, Erick.
No caso da execução de um aplicativo assinado via rede, o Windows continua pedindo autorização a cada execução?
Amanhã mesmo vou providenciar o meu certificado. Coisa que de qualquer forma todos vão ter que ter em breve por causa da NFS-e.
Zote, eu queria colocar screenshots, mas aquela tela do UAC não deixa tirar com facilidade, dai deixei sem mesmo.
Angelo, eu não costumo executar nada via rede, mas acredito que ele continue pedindo confirmação, mas ele mostra de quem é o executável. Porém, acredito que o nível de segurança possa ser configurado, permitindo executar da rede sem nenhuma confirmação.
Fica como um ponto de partida para aqueles que desejam conhecer assinatura digital.
Quanto as soluções no Windows, temos a fomosa CAPICOM que dar suporte para assinaturas tipos A1 (por software) e A3 (por token). Complementando a dica do nosso amigo Erik, o livro “Assinatura Digital – Solução Delphi e Capicom, autor Marcelo F. de Lima”, apesar de estar um pouco desatualizado é bastante interesante para quem desejar realmente conhecer mais sobre este assunto que já se tornou praticamente um padrão de segurança.
Estou tentando comprar o certificado digital pela VeriSign e me surgiu uma dúvida. No cadastro da empresa devo usar o Nome Fantasia ou a Razão Social da empresa? Creio que deva ser o Nome Fantasia, pois é o nome que o cliente conhece. Mas teria algum problema na hora da VeriSign verificar se a minha empresa existe?
Aproveitando, vocês também chegaram a fazer a certificação Microsoft no software para receber o certificado “Compatível com Windows Vista”?
@Rodrigo Acredito que pode ser problema verificar a validade do Nome Fantasia, mas não tenho certeza. Eu fiz usando Razão Social porque é praticamente igual ao fantasia.
Sobre a certificação MS, não fizemos.
Olá Erick, sei que já tem um bom tempo que este post foi publicado, mas deixa eu te perguntar, pelas suas passagens ai pela net você já viu algum programa que faça esta assinatura de aplicativos? No post você disse que usou o FinalBuilder, já viu algum outro que também faça isto.
Estou criando um instalador aqui, e quando vai-se instalar ele fica dizendo que o editor é desconhecido, seria legal ter um instalador assinado.
Há, também não posso comprar um software para isto, meu chefe não aceitaria, só estou perguntando pois vai que existe um gratuito ou opensource que eu ainda não conheço.
Fábio, programas que assinam existem e são free, o problema é que para assinar, eles precisam de um certificado digital, e isso que eu saiba não existe free.
Sim, claro, é que eu precisava apenas de sugestões de aplicações que possam fazer isto, o certificado não é o problema.
Estou usando o Inno Setup para gerar instalações, vi que nele existe uma forma de apontar o instalador para uma ferramenta que se encarregaria de assinar a instalação(Sign Tool).
Vou dar mais uma pesquisada sobre o assunto, mas o que eu precisaria é de um programa que se encaixasse nesta propriedade do Inno Setup.
Abraços…
A K Software (onde compro os meus certificados) fornece um aplicativo para assinar. Só não sei se é compatível com Inno.