Assinatura Digital de aplicativos sem OpenSSL

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por rochinha »

Amiguinhos,

Eis os passos para a geração de certificado digital 1A básico para assinatura de executáveis. Serve até para assinar NF-e mas não para enviar.

Salve o conteúdo dentro de criacert.bat

Código: Selecionar todos

@cls
@del RDS*.cer RDS*.pvk RDS*.pfx
@certutil -delstore Root RDS-CARoot
@rem certmgr.exe

@echo Criando certificado raiz...
@makecert.exe ^
-n "CN=RDS-CARoot" ^
-r ^
-pe ^
-a sha512 ^
-len 4096 ^
-sky Signature ^
-cy authority ^
-sv RDS-CARoot.pvk ^
RDS-CARoot.cer

@echo Instalando certificado raiz...
@certutil.exe -user -addstore Root RDS-CARoot.cer
@rem RDS-CARoot.cer

@echo Previsualiza se certificado raiz foi bem Instalando...
@RDS-CARoot.cer

@echo Criando certificado terminal baseado no certificado raiz...
@makecert.exe ^
-n "C=BR/ST=SP/L=Sao Paulo/O=JOSE CARLOS DA ROCHA 10838555868/OU=Minha Empresa Desenvolvimento/CN=13536613000106/emailAddress=email@meusite.com.br" ^
-iv RDS-CARoot.pvk ^
-ic RDS-CARoot.cer ^
-pe ^
-a sha512 ^
-len 4096 ^
-b 07/05/2021 ^
-e 07/05/2030 ^
-sky Exchange ^
-eku 1.3.6.1.5.5.7.3.1 ^
-sv RDS-SERVER.pvk ^
RDS-SERVER.cer

@dir rds*.* /od
@pause

@echo Criando certificado PFX...
@pvk2pfx.exe ^
-pvk RDS-SERVER.pvk ^
-spc RDS-SERVER.cer ^
-pfx RDS-SERVER.pfx ^
-po 123123

@echo Assinando aplicativo diretamente com PFX
@rem signtool sign /v /f RDS-SERVER.pfx ^ /t http://timestamp.url MyExecutable.exe

@echo Assinando aplicativo a partir do repositorio interno com PFX
@rem signtool sign /v /n "Me" /s SPC ^ /t http://timestamp.url MyExecutable.exe

@dir *.pvk *.pfx *.cer *.ext *.csr *.pem *.key
Confirme antes se seu Windows possui as seguintes ferramentas certutil.exe, makecert.exe, pvk2pfx.exe, signtool.exe. Geralmente ficam dentro das pastas do .NET.

Os comandos de assinatura do executável estão REMarcados. O certificado gerado pode ser usado por 10 anos para assinar mas só precisa ser gerado uma vez.

Usei a senha 123123 em todas as vezes que me foi questionada.

Faça as suas mudanças.

Certificado Raiz:
- Será pedida a senha nas duas primeiras telas,
- Será pedida para fazer a instalação do certificado,
- As propriedades do certificado aparecerão para a instalação,
- Proceda na instalação e escolha, Colocar todos os certificados no repositório Autoridades de Certificação Raiz Confiável,

Certificado Terminal:
- Será pedida a senha em várias telas,
- Os arquivos criados serão apresentados numa lista,
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por JoséQuintas »

E de onde saiu esse certificado RDS-CAroot?
Acho estranho, porque se fosse fácil assim, não se venderiam mais certificados.

Gerar pra nota eletrônica... difícil... teria que convencer a Fazenda a definir que você é uma autoridade reconhecida em criar certificado raiz.
Gerar pra cliente... talvez... desde que convença um administrador de rede que você tem autoridade reconhecida em criar certificado raiz.
Pra clientes meia-boca, que usam Windows pirata, não tem administrador, etc... pra esses, qualquer coisa que pedir pra fazer, eles fazem.

Um certificado comprado, ele é de uma autoridade que já é reconhecida pelo Windows, e se essa autoridade reconhece seu certificado, fim do assunto.

Outra:
Se fosse fácil assim.... pra que merd. serve o certificado? qualquer hacker criaria um.

Só acredito vendo....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por JoséQuintas »

Se possível, mande um EXE assinado com esse certificado pra mim dar uma olhada e fazer testes básicos.
Pode ser um XML de NFE assinado também.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por rochinha »

Amiguinhos,

JoséQuintas a sequencia de comandos cria dois certificados, um é o CA-Root que será usado como certificador do Certificado de Terminal.

Ele seria padrão A1, mas não certifica SEFAZ. É o que chamamos de certificado auto-assinado.

Veja os .csr, .cer ou .crt gerados e no final um deles é transformado em .pfx.

Veja que após ser gerado o CA-Root, ele pede senhas umas duas vezes, mostra o certificado como inválido e permite instalar. Ao instalar direcionamos para o repositório de certificados confiáveis e após podemos ver se o mesmo já se encontra válido.

Na sequencia este certificado raiz, instalado é acionado para gerar o certificado de terminal, onde também solicita senhas e então é gerado o mesmo.

Finalizando os comandos pvk2pfx criam o .pfx que tambémdeverá ser instalado ou usado diretamente na assinatura de um arquivo seja, .exe, .pdf, dentro do ACBrMonitor.

Mas entenda, o processo de assinatura de documentos independe de certificadora como o SEFAZ e você consegue assinar normalmente um XML mas no momento do envio é que ele não passa.

O método que passei é usado para criar certificados para sites.

Acho que daria para usar como certificado raiz um certificado A1 real já que este é fictício funcional.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por JoséQuintas »

Vamos ao lado prático, que é exatamente o que acontece com o certificado.

Eu digo que não vale, você diz que vale.

Então, qual é a autoridade, acima de nós dois, que vai comprovar ou não.

Nota:

.CER é certificado somente com chave pública, somente pra conferência de assinatura
.PFX é certificado com chave pública e particular, justamente a chave particular é usada pra assinar documentos

QUALQUER XML de nota eletrônica contém um certificado .CER dentro dele, depois de assinado, lógico.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por rochinha »

Amiguinhos,

JoséQuintas veja que como eu disse este não é um certificado que vai nos permitir sair das garras das certificadoras, mas da forma como ele é criado permite assinar com validade documental, ou seja, o aplicativo ou documento assinado confere algum controle de segurança que permita que antivirus olhem com bons olhos(se é que tem olhos) os mesmos.

Se não me engano foi você mesmo que disse em alguma postagem que assinatura dos executáveis do Harbour tornam a compilação mais rápida.

Resumindo: Este certificado gerado Raiz e Terminal não é para burlar certificadoras. Apenas nos auxiliar no desenvolvimento.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Ana Mitoooo
Usuário Nível 3
Usuário Nível 3
Mensagens: 118
Registrado em: 17 Out 2018 10:00
Localização: Sobradinho/DF

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por Ana Mitoooo »

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por rochinha »

Amiguinhos,

Caso não encontrem as ferramentas usadas no processo baixe de https://5volution.com.br/downloads/MyCAROOT.zip
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por dbsh »

Este certificado não se destina a autorizar NFe/NFCe, pode usar para teste.
Você pode usar em uma VPN, no processo de login sem senha, e outros que precisem de segurança, para identificar que foi você o autor do arquivo ou solicitação.
Uso no frente de caixa para treinar operadores, instalo um impressora PDF e o sistema vai funcionar sem ter mudar o modo de funcionamento, só pulei a autorização.
Uso no cliente onde salvo o CNPJ do cliente no certificado .
Nunca usei desta forma, desconhecia.
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por JoséQuintas »

Apenas comentário:
Quando fiz meu primeiro certificado, veio desse jeito que Ana Mitoooo mostrou.
Vieram as duas partes, e juntei as duas pra gerar o pfx.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por JoséQuintas »

Esqueci de dizer:
Dá pra assinar EXE usando CAPICOM.
Se não me engano, tá na sefazclass.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por rochinha »

Amiguinhos,
Este certificado não se destina a autorizar NFe/NFCe, pode usar para teste.
Você pode usar em uma VPN, no processo de login sem senha, e outros que precisem de segurança, para identificar que foi você o autor do arquivo ou solicitação.
Uso no frente de caixa para treinar operadores, instalo um impressora PDF e o sistema vai funcionar sem ter mudar o modo de funcionamento, só pulei a autorização.
Uso no cliente onde salvo o CNPJ do cliente no certificado .
Nunca usei desta forma, desconhecia.
Exatamente o que estou tentando deixar claro.
Dá pra assinar EXE usando CAPICOM.
CAPICOM sozinha não assina né, você precisa de algum certificado .crt+.key ou .pfx

O CAPICOM e OpenSSL são os motores. O método com makecert com certeza usa o CAPICOM já que faz parte do .NET.

Então temos 3 ferramentas para permitir a criação de certificados sendo, OpenSSL, MakeCert e KeyTool(java).

Com KeyTool tive dificuldades, MakeCert é muito simples, ja o OpenSSL é muito mais completo e também complexo.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por carlos_dornelas »

Boa tarde!!

Show de Bola Rochina, obrigado por compartilhar!

Criei uma pasta D:\CERTIFICADO e salvei o CRIACERT.BAT conforme o .bat que você postou no início. Modifiquei/reduzi a linha a seguir pois estava dando erro nela, acho que pelo tamanho... entao reduzi ela para:

Código: Selecionar todos

-n "C=BR/ST=SP/L=Sao Paulo/CN=13536613000106" ^
no teu .bat está assim:

Código: Selecionar todos

-n "C=BR/ST=SP/L=Sao Paulo/O=JOSE CARLOS DA ROCHA 10838555868/OU=Minha Empresa Desenvolvimento/CN=13536613000106/emailAddress=email@meusite.com.br" ^
No mais mantive tudo igual, inclusive a senha 123123

O CRIACERT executa, pede a senha várias vezes e cria todos os arquivos RDS-*, porém, na hora de assinar o meu executável diz que a password não está correta...

Imagem

Onde posso estar errando?

[]s

Antonio Carlos - Curitiba PR
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por rochinha »

Amiguinhos,

carlos_dorneles
Creio que se somente retirar /emailAddress=email@meusite.com.br o comando passa.

Quanto a resposta de senha incorreta já é um indício de que deu certo 99%. Refaça o processo e certifique-se que colocou a mesma senha em todos os pedidos de senha. Digite a senha no bloco de notas e cole em todos os pedidos.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
pauloa1
Usuário Nível 3
Usuário Nível 3
Mensagens: 227
Registrado em: 25 Jun 2008 14:57
Localização: Augusto Pestana-RS

Assinatura Digital de aplicativos sem OpenSSL

Mensagem por pauloa1 »

Olá Rochinha!!

Segui os passos e gerou o certificado RDS-SERVER.pfx.

Mas ao vincular com o exe do sistema da esse erro.

C:\devel\doc>C:\devel\Testes\signtool.exe sign /v /f "c:\devel\doc\RDS-SERVER.pfx" /p 123123 /t "http://timestamp.verisign.com/scripts/timstamp.dll" /a "c:\sccn\sccn_hw.exe"
SignTool Error: No certificates were found that met all the given criteria.

Como se não tivesse encontrado o certificado.

Paulo
Responder