Página 10 de 12
Assinar digitalmente um arquivo
Enviado: 02 Ago 2017 14:15
por JoséQuintas
Existe certificado especial pra assinar programa.
Sinceramente não sei se e-CNPJ vale pra isso.
Assinar digitalmente um arquivo
Enviado: 02 Ago 2017 14:21
por JoséQuintas
Assinar digitalmente um arquivo
Enviado: 02 Ago 2017 14:48
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.
Assinar digitalmente um arquivo
Enviado: 02 Ago 2017 17:50
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
Assinar digitalmente um arquivo
Enviado: 02 Ago 2017 17:57
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
Assinar digitalmente um arquivo
Enviado: 02 Ago 2017 18:00
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.
Assinar digitalmente um arquivo
Enviado: 02 Ago 2017 18:19
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....
Assinar digitalmente um arquivo
Enviado: 02 Ago 2017 18:25
por JoséQuintas
Assinar digitalmente um arquivo
Enviado: 02 Ago 2017 20:09
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.
Assinar digitalmente um arquivo
Enviado: 03 Ago 2017 00:17
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?
Assinar digitalmente um arquivo
Enviado: 03 Ago 2017 00:25
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 )
Assinar digitalmente um arquivo
Enviado: 03 Ago 2017 00:46
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
Assinar digitalmente um arquivo
Enviado: 03 Ago 2017 10:52
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.
Assinar digitalmente um arquivo
Enviado: 03 Ago 2017 10:54
por pauloa1
Estranho eu baixei com o Google Chrome.
Deve ter mudado.
Paulo
Assinar digitalmente um arquivo
Enviado: 03 Ago 2017 11:22
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.