Assinar digitalmente um arquivo

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
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Assinar digitalmente um arquivo

Mensagem por JoséQuintas »

Existe certificado especial pra assinar programa.
Sinceramente não sei se e-CNPJ vale pra isso.
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

Assinar digitalmente um arquivo

Mensagem por JoséQuintas »

certificado.png
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:

Assinar digitalmente um arquivo

Mensagem por rochinha »

Amiguinhos,

Quando eu estava com meu certificado digital ativo eu assinava o meu aplicativo. Notei leve diminuição de bloqueios no Windows, mas nada relevante. Era um certificado A1, não sei quanto ao A3.
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

Assinar digitalmente um arquivo

Mensagem por JoséQuintas »

Vê se consegue sem certificado.

Rotina saindo do forno, do primeiro teste..... rs

Ainda não testei remover algumas partes.
Aqui acabou usando o certificado de assinar código.

Código: Selecionar todos


#define CAPICOM_CURRENT_USER_STORE   2
#define CAPICOM_MY_STORE             "My"
#define CAPICOM_STORE_OPEN_READ_ONLY 0
#define URL                          "http://timestamp.verisign.com/scripts/timstamp.dll"

PROCEDURE Main

   LOCAL oStore, oSignedCode, oSigner

   oStore      := win_OleCreateObject( "CAPICOM.Store" )
   oSignedCode := win_OleCreateObject( "CAPICOM.SignedCode" )
   oSigner     := win_OleCreateObject( "CAPICOM.Signer" )

   oStore:Open( CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_ONLY )

   oSignedCode:FileName       := "d:\temp\minigui.exe"
   oSignedCode:Description    := "José M. C. Quintas"
   oSignedCode:DescriptionURL := "www.josequintas.com.br"
   ? oSignedCode:Sign( oSigner )
   ? oSignedCode:TimeStamp( URL )
   ? oSignedCode:Verify()

   RETURN
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

Assinar digitalmente um arquivo

Mensagem por JoséQuintas »

Mais testes funcionou assim, agora é confirmar se aproveitou a MyStore que estava aberta, ou se realmente precisa abrir.
Veio de um exemplo da Capicom.
Se não funcionar este último, então é o anterior, abrindo o armazenamento de certificados primeiro.

Código: Selecionar todos

#define URL "http://timestamp.verisign.com/scripts/timstamp.dll"

PROCEDURE Main

   LOCAL oSignedCode, oSigner

   oSignedCode := win_OleCreateObject( "CAPICOM.SignedCode" )
   oSigner     := win_OleCreateObject( "CAPICOM.Signer" )

   oSignedCode:FileName       := "d:\temp\test2.exe"
   oSignedCode:Description    := "José M. C. Quintas"
   oSignedCode:DescriptionURL := "www.josequintas.com.br"
   ? oSignedCode:Sign( oSigner )
   ? oSignedCode:TimeStamp( URL )
   ? oSignedCode:Verify()

   RETURN
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
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Assinar digitalmente um arquivo

Mensagem por sygecom »

rochinha escreveu:Amiguinhos,

Ainda não entendi o porque da compra de um certificado como o da COMODO para assinar nossos softwares. Os certificados e-CNPJ não servem?
Chefe,
Pior que Não serve, já tentei, eles são muito safados, cada um tem um objetivo. Esse das NFe e etc... é só com o e-cnpj ou e-nfe, que não serve para assinar aplicativo.

Da o seguinte erro:
SignTool Error: No certificates were found that met all the given criteria.

Aqui tenho 4 certificados
3 da empresa e 1 pessoa física

Empresa
1=CODE SIGNING ( para assinar aplicativos/sistemas )
2=e-CNPJ ( para emissão de nota fiscal e registros da contabilidade )
3=WILDCARD SSL ( para poder nos sites aparecer como seguro( https ), isso por que os servidores http de alguns domínio são gerenciado por nós )

Pessoa física
1=para imposto de renda, representações com advogado e cartório.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Assinar digitalmente um arquivo

Mensagem por JoséQuintas »

O novo teste:

Código: Selecionar todos


#define URL "http://timestamp.verisign.com/scripts/timstamp.dll"

PROCEDURE Main

   LOCAL oSignedCode, oSigner, oElement

   oSignedCode := win_OleCreateObject( "CAPICOM.SignedCode" )
   oSigner     := win_OleCreateObject( "CAPICOM.Signer" )

   oSignedCode:FileName       := "d:\temp\test2.exe"
   oSignedCode:Description    := "José M. C. Quintas"
   oSignedCode:DescriptionURL := "www.josequintas.com.br"
   ? oSignedCode:Sign( oSigner )
   ? oSignedCode:TimeStamp( URL )
   ? oSignedCode:Verify()

   FOR EACH oElement IN oSignedCode:Certificates
      ? oElement:SubjectName
   NEXT

   RETURN
Um nome conhecido aparece, além de JPA Tecnologia e COMODO... esquisito... rs
NIL
NIL
NIL
CN=COMODO RSA Code Signing CA, O=COMODO CA Limited, L=Salford, S=Greater Manchester, C=GB
CN=J.P.A Tecnologia Ltda. ME., O=J.P.A Tecnologia Ltda. ME., STREET=Rua xxxxxx, L=Sπo Paulo, S=Sπo
Paulo, PostalCode=03676-080, C=BR
CN=Symantec Time Stamping Services Signer - G4, O=Symantec Corporation, C=US
CN=Symantec Time Stamping Services CA - G2, O=Symantec Corporation, C=US
Pior que fiquei confuso.
Se o TIMESTAMP garante a data da assinatura, ele teria que garantir que a data não foi modificada.
E se ele garantir que a data não foi modificada, ele também garantiria que o EXE não foi modificado.

Quanto mais a gente tenta entender, menos a gente entende.... exceto a parte de que sempre nós pagamos e alguém recebe...

Ou vamos mais longe:
Se o Windows é comprovado pela Microsoft em nome do usuário, seria só o Windows assinar e estaria comprovado de onde saiu....
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

Assinar digitalmente um arquivo

Mensagem por JoséQuintas »

Só pra completar:
certificado.png
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

Assinar digitalmente um arquivo

Mensagem por JoséQuintas »

O que começou a acontecer de uns tempos pra cá foi certas vezes a assinatura não funcionar.

Não sei se isso faz parte do alerta de vencimento....

Mas agora com essa rotina vai dar pra verificar, pra eu não ter que ficar conferindo manualmente, o que seria péssimo.
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

Assinar digitalmente um arquivo

Mensagem por JoséQuintas »

Quase lá....
Chegou o arquivo .CER, mas falta o .PVK com a private key.
Já não lembro mais de onde vém esse outro.
Alguém sabe dizer?
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:

Assinar digitalmente um arquivo

Mensagem por rochinha »

Amiguinhos,

Até onde sei tanto .CER como .PFX podem conter os dados do certificado, sendo que a diferença é que a chave no caso do .CER fica residente fora dele, no token, cartão, ou este arquivo .PVK enquanto que no PFX ficam juntos.

Faça uma inclusão no seu teste, assim:

Código: Selecionar todos

   oSignedCode:DescriptionURL := "www.josequintas.com.br"
   
   // --------------------
   oCerts1:=oStore:Certificates()
   oCerts2:=oCerts1:Select("Selecione o certificado desejado","Selecione o certificado",.F.)
   IF oCerts2:Count() > 0
      oCerts3 := oCerts2:Item(1)
      //
      oSigner       := TOleAuto():New( "CAPICOM.Signer" )
      oSettings     := TOleAuto():New( "CAPICOM.Settings" )
      oAssinatura   := TOleAuto():New( "CAPICOM.SignedData" )
      //
      oSigner:Certificate := oCerts2:Item(1)
      oSettings:EnablePromptForCertificateUI := .t.
   EndIf
   // --------------------
   
   ? oSignedCode:Sign( oSigner )
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

Assinar digitalmente um arquivo

Mensagem por JoséQuintas »

Deixei anotado aqui.

Código: Selecionar todos

PVKIMPRT "d:\tudo\signtool\mycredentials.spc" "d:\tudo\signtool\jpateckey.pvk"
Li alguns faqs, a private key é gerada no momento da solicitação, e quando chega o .cer, é gerado o PFX.
Quando é usado outro navegador ou outra máquina, fica sem a private key.
Não lembro dela ter sido gerada.

Tem limitações também:
- Não serve o Edge
- Não funcionou no Internet Explorer
Sobrou chrome e Firefox.

Encontrei lá no site de pedido, que num determinado navegador não é gerada a private key, e que deveria ser solicitada novamente.
Já fiz isso, agora novamente aguardar.

Sei lá o que acontece no Windows 10: Se não serve o Edge, e o Internet Explorer não faz o que deveria...
Dobrou os navegadores, mas os dois juntos não valem por um.... rs
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

Assinar digitalmente um arquivo

Mensagem por JoséQuintas »

Aos trancos e barrancos mas finalmente concluído.
Não serve Edge, Explorer ou Google Chrome.
Só no Firefox mesmo pra baixar o certificado novo.
Já assinando com o novo.
comodo.png
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/
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

Assinar digitalmente um arquivo

Mensagem por pauloa1 »

Estranho eu baixei com o Google Chrome.
Deve ter mudado.

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

Assinar digitalmente um arquivo

Mensagem por JoséQuintas »

É tudo doido. Parece que tão inventando tanta segurança que daqui a pouco não dá pra fazer nada.

http://certhelp.ksoftware.net/support/s ... n-windows-
CHROME, SAFARI, EDGE and OPERA WILL NOT WORK with the code signing export process any longer (it now lacks the proper controls to generate and handle the private key). As of June 2016, our order system will not let anyone submit using an unsupported browser. This has nothing to do with support of signatures created with your certificate, it is just a limitation of the key generation at order time. Once exported, all certificates work in all browsers and is completely portable.
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/
Responder