Anda di halaman 1dari 14

2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Assinando digitalmente aplicações Delphi
Qualidade:  Gostou? Não gostou? Qualifica!  5 estrela(s) Qualificar!  
Criado: Sexta, 18 Novembro 2016 11:30 Categoria: Artigos
Publicado: Sábado, 26 Novembro 2016 00:00 Última Atualização: Domingo, 04 Dezembro 2016 19:56
Acessos: 3820 Escrito por Carlos B. Feitoza Filho

Gosto de fazer alguns exemplos em casa e levar para o trabalho a fim de mostrar algumas
novidades  para  meus  colegas  desenvolvedores.  Felizmente  não  temos  restrição  nesse
aspecto, o que é muito bom. Várias vezes eu já desenvolvi soluções para o trabalho em
minha casa, porque sim, sou viciado em Delphi e programação é meu hobby. O problema
é que ultimamente eu tenho notado que todos os programas que eu compilo em casa não
rodam  direito  no  PC  do  trabalho.  Eles  têm  comportamentos  estranhos,  ficam
extremamente  lentos,  têm  problemas  para  pintar  a  tela  e  seus  botões  não  funcionam.
Resumindo:  o  programa  fica  inútil!  Veja  abaixo  um  exemplo  de  como  um  de  meus
programas aparece:

Além dos labels e dos botões não aparecerem, clicar nestes botões é também inútil. O programa não responde e
fica também muito lento. O que na verdade deveria aparecer era a tela abaixo:

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 1/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Após  algumas  pesquisas  eu  descobri  que  alguns  programas  instalados  no  PC  podem  bloquear  parcial  ou
totalmente nossas aplicações. Descobri ainda que o programa que estava bloqueando minha aplicação era, nada
mais,  nada  menos  que  um  daqueles  plugins  de  proteção  de  Internet  Banking.  A  solução  básica  seria
simplesmente desinstalar esses programas, mas infelizmente eu preciso acessar o Internet Banking e preciso que
eles permaneçam instalados, além disso, eu estou buscando uma solução correta e definitiva. Supondo que você
precise  instalar  um  de  seus  programas  na  máquina  de  um  cliente,  acredito  que  ele  não  ficaria  nem  um  pouco
contente ao saber que precisaria desinstalar os plugins guardiões e consequentemente não poderia mais acessar
o  Internet  Banking  de  seu  banco.  A  única  forma  de  harmonizar  a  convivência  entre  meus  programas  e  os
programas temperamentais dos bancos é assinando digitalmente minhas aplicações.

O que é uma assinatura digital?
No  mundo  real,  uma  assinatura  é  um  meio  de  validar  um  documento.  Documentos  só  tem  validade  quando
assinados e muitos deles precisam ter a assinatura em si validada (firma reconhecida), de forma a comprovar que
ela não é falsa. Uma assinatura digital é basicamente a mesma coisa, só que ao invés de usarmos tinta, usamos
bytes. Grosso modo, um executável é como um documento, e ao executá­lo é como se você estivesse confiando
no  conteúdo  desse  documento,  seguindo­o  à  risca.  Qualquer  cláusula  abusiva  existente  nesse  documento  será
executada  também,  acontece  que,  na  verdade,  quem  sofre  as  consequências  caso  esse  documento  contenha
cláusulas abusivas é o Sistema Operacional e por isso, assinar um executável tem a finalidade de informar ao SO
que aquele "documento" é válido e não contém clausulas que prejudiquem o SO.
Se você é um leitor atento, agora deve estar pensando como um certificado pode comprovar que o conteúdo de
um executável não é prejudicial. A resposta é surpreendentemente simples: não pode! Isso mesmo, a assinatura
digital  não  garante  que  um  executável  não  seja  malicioso  (leia  mais  a  respeito  disso
em  http://idgnow.com.br/internet/2013/10/04/cresce­o­numero­de­malwares­com­certificado­digital­
legitimo­diz­mcafee/). Então, como uma assinatura pode ajudar a proteger nosso SO de código malicioso?
Eu  falei  anteriormente  que  muitas  vezes  ao  assinarmos  um  documento  precisamos  validar  até  mesmo  a
assinatura,  reconhecendo  em  cartório  a  firma.  Não  é  diferente  com  assinaturas  digitais,  existem  órgãos
certificadores  confiáveis  (Comodo,  Thawte,  VeriSign,  CertiSign,  etc.)  que  têm  por  função  fornecer  assinaturas
digitais  válidas  para  pessoas  e  empresas.  Como  entidades  certificadoras  confiáveis  elas  garantem  que  os
certificados  digitais  gerados  por  elas  são  reais  e  pertencem  à  pessoa  ou  entidade  que  eles  representam.
Certificados  fornecidos  por  estas  empresas  certificadoras  podem  ser  usados  para  assinar  um  executável,  mas,
como  você  deve  estar  imaginando,  fazer  isso  é  um  pouco  burocrático  e  pago.  Veja  como  (e  quanto)
em:  http://www.infomoney.com.br/negocios/noticia/423356/certifica­ccedil­atilde­digital­saiba­quanto­
custa­como­obter­seu. Mesmo obtendo um certificado digital válido, de uma empresa certificadora reconhecida,
ainda assim, a assinatura de um executável não garante que ele não vá formatar seu HD ou rodar um keylogger,
no  entanto,  a  assinatura  válida  tornará  mais  fácil  identificar  o  responsável  e  por  isso,  um  executável  assinado
digitalmente  com  um  certificado  criado  por  uma  empresa  séria,  dificilmente  conterá  código  malicioso.  Ninguém
quer se queimar, não é mesmo?
Se você é uma empresa e pretende assinar seus executáveis, eu recomendo que você crie seu certificado digital
formalmente e use­o para assinar seus programas. Esta é a forma mais correta. Se você é um desenvolvedor
pequeno e não quer perder tempo nem dinheiro comprando um certificado, é perfeitamente válido criar o
seu  próprio  e  usá­lo  totalmente  grátis.  Mas  lembre­se  de  que  esse  tipo  de  certificado  é  como  simplesmente
assinar um documento sem reconhecer a firma, ou seja, você está dizendo que o certificado te representa, mas
não tem nenhuma empresa por trás para dizer que isso é verdade. A implicação disso é que se algum programa
no SO tentar validar a assinatura de seu executável, certamente ele não vai conseguir, contudo, para resolver os
problemas  causados  por  plugins  de  internet  banking  e  alguns  anti­vírus,  a  assinatura  simples  funciona
perfeitamente, portanto, continue lendo :)

O que é necessário?
Para  realizar  a  assinatura  de  um  executável  você  vai  precisar  basicamente  do OpenSSL  e  de  uma  ferramenta
chamada  SignTool.  O  OpenSSL  em  sua  forma  binária  instalável  pode  ser  encontrado
em  https://slproweb.com/products/Win32OpenSSL.html.  Baixe  a  versão  mais  recente  para  Win321.  O
OpenSSL será utilizado para a geração de nosso certificado personalizado com nossas informações.
O  SignTool  é  uma  ferramenta  disponível  no  SDK  do  Windows,  o  qual  pode  ser  baixado
em  https://www.microsoft.com/en­us/download/details.aspx?id=8279.  É  o  SignTool  que  será  usado  para
assinar o nosso executável com o certificado gerado pelo OpenSSL.

Criando nosso certificado pessoal
A  criação  do  certificado  pessoal  consiste  de  duas  etapas.  Primeiramente  precisamos  gerar  um
certificado PKCS#12 (arquivo .pem) e em seguida exportar a partir desse certificado um arquivo .pfx (Personal
http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 2/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Information Exchange).  O  certificado  PKCS#12  contém  nossas  informações  e  uma  chave  privada  e  o  arquivo
pfx  contém,  encapsulado  em  si  mesmo,  um  arquivo  de  chave  pública  (arquivo  .cer)  e  um  arquivo  de  chave
privada (arquivo .pvk).
A minha forma de criação do arquivo .pem vai ser diferente daquelas encontradas na internet. Eu constatei que a
forma  usual  de  criação  desse  arquivo  não  contempla  o  uso  de  caracteres  especiais  e  nem  acentuados.  Como
falantes da língua portuguesa, precisamos de um meio de permitir que as informações contidas no arquivo .pem
possam ser compostas, também, de caracteres acentuados.
Primeiramente, crie um arquivo de texto simples em formato UTF8. Você pode usar no Notepad++, ou qualquer
outro  editor  que  permita  salvar  texto  plano  em  formato  UTF8.  Após  criar  o  arquivo,  salve­o  com  um  nome
adequado e extensão .cfg. Cole dentro desse arquivo o seguinte conteúdo:

[req]
distinguished_name = req_distinguished_name
prompt = no
utf8 = yes
default_keyfile = <KEYFILE>
encrypt_key = no
[req_distinguished_name]
C = <C>
ST = <ST>
L = <L>
O = <O>
OU = <OU>
CN = <CN>
emailAddress = <E>

Após colar este conteúdo, substitua os campos destacados da seguinte forma:

<KEYFILE> = Coloque o caminho completo para o arquivo .pem que será gerado. Cada barra invertida deve
ser duplicada, por exemplo, d:\\zetapioca.pem, seria um valor válido
<C> = Código de duas letras para o país. No caso do Brasil, esse valor seria BR
<ST> = Nome do estado ou província, por exemplo, São Paulo
<L> = Nome da localidade (cidade), por exemplo, São José dos Campos
<O>  =  Nome  da  organização,  nome  empresarial  ou  Razão  Social,  por  exemplo,  Da  Silva  Alimentos  de
Mandioca, Ltda.
<OU>  =  Nome  da  unidade  organizacional  responsável  por  esta  assinatura,  por  exemplo,  Unidade  de
Desenvolvimento de Sistemas
<CN>  =  Nome  comum  que  identificará  o  signatário.  O  valor  deste  campo  varia  segundo  a  aplicação  do
certificado. Como estamos usando este certificado para assinar uma aplicação, este valor pode ser a Razão
Social  (o  mesmo  que  se  colocou  no  campo  <O>)  ou  mesmo  um  nome  fantasia  da  empresa,  por
exemplo, Tapioca Masters
<E> = E­mail para contato, por exemplo, admin@tapiocamasters.net

Você não deve alterar nenhum outro ponto deste texto, a não ser aqueles indicados acima. A título de
visualização mais clara, abaixo está o exemplo de nosso arquivo, o qual chamaremos de zetapioca.cfg:

[req]
distinguished_name = req_distinguished_name
prompt = no
utf8 = yes
default_keyfile = d:\\zetapioca.pem
encrypt_key = no
[req_distinguished_name]
C = BR
ST = São Paulo
L = São José dos Campos
O = Da Silva Alimentos de Mandioca, Ltda.
OU = Unidade de Desenvolvimento de Sistemas
CN = Tapioca Masters
emailAddress = admin@tapiocamasters.net

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 3/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Após criar o arquivo e certificar­se de que ele está em UTF8 e com todas as informações corretas, abra um
prompt de comando, mude para o diretório bin, que está dentro do diretório do OpenSSL e, de lá, execute o
seguinte comando:

Openssl.exe req ­x509 ­days 730 ­newkey rsa:1024 ­config meusdados.cfg ­out
meucertificado.pem

Substitua  meusdados.cfg  pelo  caminho  completo  para  seu  arquivo  de  configurações  que  foi  gerado  no  passo
anterior. Substitua meucertificado.pem  pelo  mesmo  caminho  completo  informado  na  chave default_keyfile  do
arquivo  de  configurações  que  foi  gerado  no  passo  anterior,  a  diferença  é  que  aqui  não  serão  necessárias  as
barras invertidas duplicadas. Veja abaixo como deve ser a saída desse comando após pressionarmos ENTER: 

Tal como mostra a saída acima, no local indicado, o arquivo .pem (PKCS#12) será gerado. Em nosso exemplo o
arquivo zetapioca.pem foi gerado em D:\. Se você for tão curioso como eu, você vai abrir este arquivo para ver o
que foi gerado. Vou te poupar desse trabalho. Dentro do arquivo .pem gerado, existe o seguinte conteúdo:

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 4/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Tal  como  eu  disse  anteriormente,  o  arquivo  .pem  contém  apenas  nossa  chave  privada  (Private  Key)  e  nossas
informações  em  um  certificado.  Ambas  as  informações  estão  obviamente  criptografadas.  Toda  vez  que  esse
arquivo é gerado, seu conteúdo muda, mesmo que todas informações sejam idênticas, portanto, aquilo que você
está  vendo  na  imagem  acima  não  vai  ser  igual  àquilo  que  você  gerar,  mesmo  que  você  use  as  mesmas
informações que eu usei.
O  próximo  passo  é,  a  partir  do  arquivo  .pem,  extrair  um  arquivo  .pfx.  Para  realizar  essa  extração,  execute  o
comando a seguir novamente a partir do diretório bin da pasta do OpenSSL:

Openssl.exe pkcs12 ­export ­passout pass:senhaaqui ­in meucertificado.pem ­out
meucertificado.pfx

Novamente,  acima,  substitua  meucertificado.pem  pelo  caminho  completo  para  o  arquivo  gerado  na  etapa
anterior.
Substitua meucertificado.pfx pelo caminho completo onde o arquivo .pfx deverá ser gerado. Eu recomendo usar
o mesmo caminho onde o arquivo .pem estiver.
Onde se lê senhaaqui, informe a senha que será aplicada ao seu arquivo .pfx gerado. Essa senha é a segurança
do seu certificado, de forma que ninguém além de você possa usá­lo. Ao pressionar ENTER seu arquivo .pfx será
gerado no local especificado. Veja abaixo a tela após a geração do pfx em nosso exemplo:

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 5/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Note que a execução do comando anterior não emite qualquer resultado, é como se nada tivesse sido feito, mas
foi!  Verifique  que  o  arquivo  .pfx  foi  criado  no  local  indicado  no  comando.  Se  erros  tivessem  sido  emitidos,  este
arquivo não teria sido gerado. Novamente você deve estar curioso para saber o que existe no arquivo .pfx, mas
vou logo dizendo, ele é binário! Não há nada de especial no arquivo, a não ser o fato de que ele agora pode ser
usado para, finalmente, assinar uma aplicação :)

Assinando uma aplicação Delphi (ou qualquer outra...)
Após a geração do arquivo .pfx poderemos assinar nossa aplicação. É o arquivo .pfx que, por meio da ferramenta
SignTool, assinará nosso executável. Para realizar a assinatura abra novamente o prompt de comando, acesse a
pasta Microsoft SDKs\Windows\v7.1\Bin e, dentro dela, execute o seguinte comando:

Signtool sign /f meucertificado.pfx /p minhasenha meuexecutavel.exe

Mais  uma  vez,  substitua  meucertificado.pfx  pelo  nome  e  local  do  arquivo  .pfx.  Substitua  minhasenha  pela
senha que foi informada ao gerar o arquivo .pfx e, no final do comando (meuexecutavel.exe), informe o caminho
do executável que deverá ser assinado. Veja abaixo a tela do prompt de comando ao se assinar um executável:

Isto feito, se nós clicarmos com o botão direito do mouse no executável e clicarmos em Propriedades, notaremos
que existe mais uma aba de nome "Assinaturas Digitais":

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 6/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Veja que em Nome do signatário aparece  o  nome  que  nós  informamos  no  campo  <CN>  (Common  Name)  do
arquivo  .cfg,  logo,  é  neste  campo  onde  você  deve  colocar  a  informação  que  você  pretende  que  apareça
em Nome do signatário. Ao selecionar a assinatura na lista, o botão Detalhes ficará habilitado e  ao  clicá­lo,  a
seguinte tela será mostrada:

Nesta  tela  são  exibidas  mais  algumas  informações  sobre  nossa  assinatura,  mas  atente  para  a  mensagem  no
topo: Uma cadeia de certificação foi processada, mas terminou em um certificado raiz que não é confiável
para o provedor de confiabilidade. Essa mensagem informa que a nossa assinatura digital não foi validada por
uma  entidade  certificadora  reconhecida.  Isso  era  esperado,  porque  fomos  nós  quem  geramos  nosso  próprio
certificado e o Windows não tem condição de saber se essa assinatura é válida. Essa informação não apareceria
http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 7/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

se  nosso  certificado  tivesse  sido  criado  por  um  órgão  certificador  (CertiSign,  VeriSign,  etc.).  Apesar  de  isso
parecer um problema sério, na verdade não é NA MAIORIA DOS CASOS. Por exemplo, a incompatibilidade de
meus softwares com os plugins guardiões dos bancos foi totalmente resolvida com essa assinatura simples.
Podem existir outros softwares de proteção que exijam uma assinatura válida gerada por um órgão certificador,
neste caso não há nada a ser feito, a não ser pagar pela geração de um certificado válido, mas pode acreditar, se
você  chegar  no  ponto  de  precisar  de  fato  de  um  certificado  emitido  por  uma  entidade  certificadora,  você
certamente  o  fará,  porque  até  então  eu  não  vi  nenhum  sistema  reclamar  das  assinatura  simples.  Em  outras
palavras, se o sistema de um cliente tem algum programa guardião ou anti­virus que requer que seu programa
seja assinado e validado, certamente este cliente é um cliente importante o suficiente para que você invista nesta
"assinatura digital com firma reconhecida".
Na tela anterior você pode clicar em Exibir Certificado, para exibir uma tela como esta:

Nesta  tela,  todas  as  características  e  informações  sobre  o  seu  certificado  são  exibidas.  Explore  as  outras  abas
para ver o que elas contém.
Note  que  o  certificado  tem  uma  validade  de  2  anos.  Isso  se  deve  ao  parâmetro  ­days  730  que  foi  usado  na
criação do arquivo PKCS#12 (arquivo .pem). Uma outra quantidade de dias poderia ter sido informada a fim de
suprir suas necessidades.
Observe  que  os  campos  Emitido  para  e  Emitido  por,  contém  a  mesma  informação.  Isso  é  absolutamente
esperado,  já  que  foi  você  mesmo  quem  emitiu  (gerou)  o  certificado  para  si  mesmo.  Este  tipo  de  certificado  se
chama Auto­Assinado. Na aba Detalhes existem mais informações sobre o seu certificado:

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 8/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Observe os campos Emissor e Requerente e veja que ambos possuem exatamente os mesmos valores. Isso é
uma característica de um certificado auto­assinado.
Por último, mas não menos importante, e voltando à aba Geral, a informação sobre certificado raiz não confiável
é novamente exibida, mas há um detalhe adicional, veja: Para ativar a confiabilidade, instale este certificado
no repositório de autoridades de certificação raiz confiáveis. Este texto rebuscado diz que você pode instalar
seu certificado em um local específico, onde todo e qualquer certificado é considerado confiável. O nome deste
local é o Repositório de Autoridades de Certificação Raiz Confiáveis.

Como instalar e confirmar que nosso certificado é confiável?
Você  não  precisa  marcar  seu  certificado  como  confiável  na  grande  maioria  dos  casos,  mas,  a  título  de
aprendizado  você  pode  fazê­lo  de  duas  formas.  Se  você  já  estiver  na  tela  abaixo,  clique  em  Instalar
Certificado...:

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 9/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Caso você não esteja na tela acima, você pode dar duplo clique no arquivo .pfx. Em ambos os casos, a seguinte
tela vai aparecer:

Selecione  o  local  do  repositório  de  acordo  com  sua  necessidade  e  clique  em  Avançar  até  que  a  tela  a  seguir
apareça.  A  quantidade  de  telas  a  exibir  antes  que  a  tela  abaixo  apareça  varia.  Se  você  executou  o  Assistente
para Importação de Certificados dando duplo clique no arquivo .pfx, duas telas adicionais serão exibidas. Se este
for o caso, não é necessário alterar nenhuma das informações mostradas a não ser informar a senha do arquivo
.pfx quando solicitada.

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 10/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Na tela acima, selecione Colocar todos os certificados no repositório a seguir e  clique  o  botão Procurar.  A


tela a seguir será mostrada:

Selecione  Autoridades  de  Certificação  Raiz  Confiáveis,  que  foi  exatamente  o  que  foi  recomendado
anteriormente para tornar seu certificado confiável, e clique OK. Você retornará a tela anterior, então pressione o
botão Avançar e a tela de resumo a seguir vai aparecer:

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 11/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Clique em Concluir para, finalmente, instalar seu certificado no repositório escolhido. Nesse momento o Windows
vai emitir um último aviso, semelhante ao da figura a seguir:

Se você confia em você mesmo, clique em Sim :) Brincadeiras à parte, o que este aviso diz é que você, o usuário
do  SO,  está  explicitamente  dizendo  que  este  certificado  é  confiável  e  vai  transformá­lo  numa
Autoridade  Certificadora  Raiz  Confiável  dentro  do  seu  SO.  Em  outras  palavras,  ao  pressionar  Sim,  Tapioca
Masters  vai  se  transformar  em  uma  entidade  certificadora  confiável  e  que,  qualquer  certificado  emitido  por
Tapioca Masters será automaticamente confiável. Ao pressionar Sim a seguinte caixa de diálogo vai aparecer:

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 12/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Isso concluiu a instalação e a confirmação de que seu certificado é confiável. Para comprovar que tudo ocorreu
bem, clique com o botão direito do mouse no executável que foi assinado, clique em Propriedades e acesse a aba
Assinaturas Digitais. Selecione a assinatura digital e clique em Detalhes:

Ao  contrário  da  primeira  vez  que  você  viu  essa  tela,  ela  não  mais  contém  o  aviso  sobre  certificado  raiz  não
confiável, provando que nosso certificado, para o SO, é válido e confiável! Ao clicar em Exibir Certificado também
se nota que nosso certificado é confiável, veja:

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 13/14
2017­5­22 Assinando digitalmente aplicações Delphi ­ Zetta­Ømnis Soluções Tecnológicas

Assistente para assinatura digital de executáveis
Alguns dias depois de publicar este artigo eu tive uma ideia para automatizar todos os passos em um arquivo de
lote e foi aí que eu pensei que poderia fazer bem melhor que isso. Assim surgiu o Zetta­Ømnis Digital Signing
Assistant, o qual disponibilizo gratuitamente em anexo a este artigo. Não vou dar maiores detalhes sobre este
programa, pois ele é bem simples e intuitivo. Se você leu o artigo, certamente saberá usá­lo.

http://zettaomnis.net.br/portal/index.php/a2d­mei/articles­a2d­mei/112­assinando­aplicacoes­delphi 14/14

Anda mungkin juga menyukai