Login Registre-se
NF-e: Assinatura dos XMLs de Envio de Lote, Cancelamento e Inutilização - Certificado A3  XML
Índice dos Fóruns » Artigos / Tutoriais
Autor Mensagem
macielgoncalves

Administrador
[Avatar]

Membro desde: 06/03/2011 14:49:25
Mensagens: 1233
Localização: Tubarão - SC
Offline

Olá Pessoal,

Complementando um dos artigos anteriores que sugere uma forma de assinar os XMLs do projeto NF-e usando Certificados Modelos A1, segue neste post uma forma de realizar a Assinatura com o uso de Certificados A3 (Cartão ou Token).


Conteúdo do arquivo "SmartCard.cfg" (o arquivo deve ser criado na raiz da aplicação):


Conteúdo do arquivo "Token.cfg" (o arquivo deve ser criado na raiz da aplicação):

As DLLs citadas nos arquivos de configuração serão instaladas junto com o driver do Cartão ou Token.

Classe para Assinatura do XMLs de Envio, Cancelamento e Inutilização:


Dúvidas, favor criar um tópico em: NF-e (Nota Fiscal Eletrônica).
Cadastrem-se na Comunidade JavaC: Cadastro.

Abraços.

Esta mensagem foi editada 1 vez. Última atualização foi em 16/07/2011 18:28:01


Maciel Gonçalves
Administrador (JavaC - Java Community)
Seguir no Twitter @macielgoncalves



Projeto NF-e, CT-e, CC-e? Comece Por Aqui!

Quer saber mais sobre NF-e? Acesse www.MACIELGONCALVES.com.br

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original." Albert Einstein
"Seja liberal naquilo que você aceita, e conservador naquilo que você propaga". Jon Postel.
"A coisa mais indispensável a um homem é reconhecer o uso que deve fazer do seu próprio conhecimento". Platão


Emissão de Documentos Fiscais para Desenvolvedores Java


Membros do fórum,

Usem a tag [code] e [/code] quando postarem Códigos Java e ou exemplos de XMLs.
Evitem tópicos duplicados.
Tópico solucionado? Edite o primeiro post e coloque [RESOLVIDO] no final do título.
Evitem reviver tópicos antigos.

O tópico resolveu seu problema? Seja gentil, comente e ou agradeça quem contribuiu com a solução.

Obrigado!

[WWW] [MSN]
Rebeca

JavaC Membro

Membro desde: 05/10/2011 16:30:52
Mensagens: 6
Offline

Olá!
Utilizei este código e tive este erro:

| ERROR: | java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_USER_NOT_LOGGED_IN
java.security.ProviderException: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_USER_NOT_LOGGED_IN
at sun.security.pkcs11.P11Signature.engineSign(P11Signature.java:531)
at java.security.Signature$Delegate.engineSign(Signature.java:112
at java.security.Signature.sign(Signature.java:522)
at org.jcp.xml.dsig.internal.dom.DOMSignatureMethod.sign(DOMSignatureMethod.java:294)
at org.jcp.xml.dsig.internal.dom.DOMXMLSignature.sign(DOMXMLSignature.java:373)
at com.fluentstore.nfe.bean.AssinarXMLsCertfificadoA3.assinarNFe(AssinarXMLsCertfificadoA3.java:165)
at com.fluentstore.nfe.bean.AssinarXMLsCertfificadoA3.assinaEnviNFe(AssinarXMLsCertfificadoA3.java:117)
at com.fluentstore.nfe.bean.AssinarXMLsCertfificadoA3.main(AssinarXMLsCertfificadoA3.java:70)
Caused by: sun.security.pkcs11.wrapper.PKCS11Exception: CKR_USER_NOT_LOGGED_IN
at sun.security.pkcs11.wrapper.PKCS11.C_SignFinal(Native Method)
at sun.security.pkcs11.P11Signature.engineSign(P11Signature.java:493)
... 7 more


O meu arquivo SmartCard.cfg contem:
name = SmartCardn\
library = /Library/OpenSC/lib/opensc-pkcs11.so
showInfo = true

Sabe como solucionar?
macielgoncalves

Administrador
[Avatar]

Membro desde: 06/03/2011 14:49:25
Mensagens: 1233
Localização: Tubarão - SC
Offline

Olá Rebeca,

Coloque a linha abaixo no seu código e post o resultado novamente.

Att,

Maciel Gonçalves
Administrador (JavaC - Java Community)
Seguir no Twitter @macielgoncalves



Projeto NF-e, CT-e, CC-e? Comece Por Aqui!

Quer saber mais sobre NF-e? Acesse www.MACIELGONCALVES.com.br

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original." Albert Einstein
"Seja liberal naquilo que você aceita, e conservador naquilo que você propaga". Jon Postel.
"A coisa mais indispensável a um homem é reconhecer o uso que deve fazer do seu próprio conhecimento". Platão


Emissão de Documentos Fiscais para Desenvolvedores Java


Membros do fórum,

Usem a tag [code] e [/code] quando postarem Códigos Java e ou exemplos de XMLs.
Evitem tópicos duplicados.
Tópico solucionado? Edite o primeiro post e coloque [RESOLVIDO] no final do título.
Evitem reviver tópicos antigos.

O tópico resolveu seu problema? Seja gentil, comente e ou agradeça quem contribuiu com a solução.

Obrigado!

[WWW] [MSN]
Rebeca

JavaC Membro

Membro desde: 05/10/2011 16:30:52
Mensagens: 6
Offline

O erro foi arrumado por meio da alteração no método assina assinaEnviNFe.
Segue:

Sir Camelot

JavaC Membro
[Avatar]
Membro desde: 29/03/2012 14:47:58
Mensagens: 45
Localização: Recife - PE
Offline

Boa tarde.

Gostaria de saber se é possível utilizar essa classe num projeto web?

Estou desenvolvendo uma aplicação que gera o XML e precisa ser assinado com certificado A3.

Então no jsp o cliente emite o lote de notas, gera o xml e deverá assinar os arquivos. No eclipse, executando a classe como aplicação está funcionando corretamente, quando o cartão está na leitora o arquivo é assinado. Minha dificuldade é como utilizar a classe de forma a quando o cliente emitir as notas ele tenha a opção de assinar os arquivos que selecionar em um determinado diretório.

Abraços.

Bruno Camelo
jeroqueiroz

Moderador
[Avatar]

Membro desde: 11/06/2011 09:45:18
Mensagens: 1329
Localização: Bahia
Offline

EU tive problemas com a utilização de A3 com sistema Web, porém teve outras pessoas aqui do fórum que conseguiram, sendo que isto foi a 1 ano atrás e após isto vi alguma mudanças aqui no fórum que seguinte quem usou corrige os problemas que passei na época. Não sei se a resposta foi satisfatória, mas acho que já ajuda a decidir a utilização.

Você encontra posts aqui no fórum que vai relatar a integração feita.

Este post foi um dos que mim referi onde outros usuários relatam que conseguiram fazer funcionar: http://javac.com.br/jc/posts/list/15/423.page

Jeremias Santos
Seguir no Twitter @jeroqueiroz
Blog Jeroqueiroz


Projeto NF-e, CT-e, CC-e? Comece Por Aqui!


Membros do fórum,

Usem a tag [code] e [/code] quando postarem Códigos Java e ou exemplos de XMLs.
Evitem tópicos duplicados.
Tópico solucionado? Edite o primeiro post e coloque [RESOLVIDO] no final do título.
Evitem reviver tópicos antigos.

O tópico resolveu seu problema? Seja gentil, comente e ou agradeça quem contribuiu com a solução.

Obrigado!
[Email] [WWW] [Yahoo!] [MSN]
Sir Camelot

JavaC Membro
[Avatar]
Membro desde: 29/03/2012 14:47:58
Mensagens: 45
Localização: Recife - PE
Offline

Obrigado, já é um caminho.

Vi que os problemas que tenho hoje, alguns já foram discutidos e sanados.

Caso tenha maiores dificuldades volto a sinalizar.

Abraços.

Bruno Camelo
macielgoncalves

Administrador
[Avatar]

Membro desde: 06/03/2011 14:49:25
Mensagens: 1233
Localização: Tubarão - SC
Offline

Sir Camelot wrote:Boa tarde.

Gostaria de saber se é possível utilizar essa classe num projeto web?

Estou desenvolvendo uma aplicação que gera o XML e precisa ser assinado com certificado A3.

Então no jsp o cliente emite o lote de notas, gera o xml e deverá assinar os arquivos. No eclipse, executando a classe como aplicação está funcionando corretamente, quando o cartão está na leitora o arquivo é assinado. Minha dificuldade é como utilizar a classe de forma a quando o cliente emitir as notas ele tenha a opção de assinar os arquivos que selecionar em um determinado diretório.

Abraços.


Olá,

Nos casos em que seu cliente possua um certificado modelo A3, e a plataforma da sua aplicação for Web, essa classe não se aplica. O Certificado modelo A3 é residente dentro da mídia (cartão ou token). Nesses casos sugiro você pensar na possibilidade de utilizar um Applet Java, pois o mesmo terá acesso ao Certificado A3 na máquina do cliente e você conseguirá executar todas as funções necessárias para NF-e e ou outros projetos.

Att,

Maciel Gonçalves
Administrador (JavaC - Java Community)
Seguir no Twitter @macielgoncalves



Projeto NF-e, CT-e, CC-e? Comece Por Aqui!

Quer saber mais sobre NF-e? Acesse www.MACIELGONCALVES.com.br

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original." Albert Einstein
"Seja liberal naquilo que você aceita, e conservador naquilo que você propaga". Jon Postel.
"A coisa mais indispensável a um homem é reconhecer o uso que deve fazer do seu próprio conhecimento". Platão


Emissão de Documentos Fiscais para Desenvolvedores Java


Membros do fórum,

Usem a tag [code] e [/code] quando postarem Códigos Java e ou exemplos de XMLs.
Evitem tópicos duplicados.
Tópico solucionado? Edite o primeiro post e coloque [RESOLVIDO] no final do título.
Evitem reviver tópicos antigos.

O tópico resolveu seu problema? Seja gentil, comente e ou agradeça quem contribuiu com a solução.

Obrigado!

[WWW] [MSN]
Sir Camelot

JavaC Membro
[Avatar]
Membro desde: 29/03/2012 14:47:58
Mensagens: 45
Localização: Recife - PE
Offline

Opa Maciel,

então o applet faria só o acesso ao cartão para validar os dados, solicitar o pin ou ele vai ter toda essa classe de assinatura dentro dele e fazer tudo?


Bruno Camelo
macielgoncalves

Administrador
[Avatar]

Membro desde: 06/03/2011 14:49:25
Mensagens: 1233
Localização: Tubarão - SC
Offline

Olá Sir Camelot,

Todos os procedimento que depedem do Certificado Digital devem ser desenvolvidos dentro do Applet, tais como:

- Assinatura dos XMLs;
- Envio dos XMLs.

Os demais, podem ficar fora do Applet:

- Geração do XML;
- Validação do XML;
- Envio de e-mail para o destinatario;
- etc..

Att,

Maciel Gonçalves
Administrador (JavaC - Java Community)
Seguir no Twitter @macielgoncalves



Projeto NF-e, CT-e, CC-e? Comece Por Aqui!

Quer saber mais sobre NF-e? Acesse www.MACIELGONCALVES.com.br

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original." Albert Einstein
"Seja liberal naquilo que você aceita, e conservador naquilo que você propaga". Jon Postel.
"A coisa mais indispensável a um homem é reconhecer o uso que deve fazer do seu próprio conhecimento". Platão


Emissão de Documentos Fiscais para Desenvolvedores Java


Membros do fórum,

Usem a tag [code] e [/code] quando postarem Códigos Java e ou exemplos de XMLs.
Evitem tópicos duplicados.
Tópico solucionado? Edite o primeiro post e coloque [RESOLVIDO] no final do título.
Evitem reviver tópicos antigos.

O tópico resolveu seu problema? Seja gentil, comente e ou agradeça quem contribuiu com a solução.

Obrigado!

[WWW] [MSN]
Ramon Pires

JavaC Membro

Membro desde: 13/04/2012 08:19:41
Mensagens: 49
Offline

Criei uma classe modelo chamada Signature,para manter os dados da assinatura,só que eu não faço idéia de como adicionar essa assinatura dentro do xml,quais dados vão dentro da signature, tambem não sei em que momento essa assinatura pode ser adicionada no xml,e se essa mesma signature será a mesma para cada tipo de xml gerado. Estou usando XStream.
Sir Camelot

JavaC Membro
[Avatar]
Membro desde: 29/03/2012 14:47:58
Mensagens: 45
Localização: Recife - PE
Offline

Ok Maciel, então com o applet eu consigo também solicitar a digitação do pin do cartão, ou tem que ser fixo também?

Aquela janela que aparece o certificado para seleção e depois o pin, é o programa que controla ou o browser?

Ex: https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeRecepcao2

Acessando esse endereço ele pede pra selecionar o certificado e o pin se o cartão estiver inserido na leitora, isso seria feito pelo applet?

Bruno Camelo
Ramon Pires

JavaC Membro

Membro desde: 13/04/2012 08:19:41
Mensagens: 49
Offline

O meu projeto nfe vai ser web,mas irá rodar em um servidor linux,eu queria saber se vcs tem algum exemplo com certificado a3 no linux,prq já pensei na possibilidade de virtualizar uma maquina windows apenas para trabalhar com o certificado a3.
macielgoncalves

Administrador
[Avatar]

Membro desde: 06/03/2011 14:49:25
Mensagens: 1233
Localização: Tubarão - SC
Offline

Sir Camelot wrote:Ok Maciel, então com o applet eu consigo também solicitar a digitação do pin do cartão, ou tem que ser fixo também?

Aquela janela que aparece o certificado para seleção e depois o pin, é o programa que controla ou o browser?

Ex: https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeRecepcao2

Acessando esse endereço ele pede pra selecionar o certificado e o pin se o cartão estiver inserido na leitora, isso seria feito pelo applet?


Sir Camelot,

Exitem duas formas para você acessar o Certificado Digital A3, por meio da DLL do fabricante ou por meio do Repositorio do Windows. Para primeira alternativa existem vários exemplos aqui no fórum, para a segunda estou começado a publicar os exemplos de como fazer (Dados do Certificado Digital A1 e A3 (Repositório do Windows)).

Quando você trabalha com Ambiente Web e precisa acessar os Certificados A3 é necessário acesso ao hardware (Leitor do Cartão ou Token), pois o Certificado, para Assinatura e Envio da NF-e, NÃO podem ser retirados da mídia (Cartão ou Token). Para issso você pode usar um Applet Java, dessa forma você terá acesso ao computador do cliente e consequentemente conseguirá fazer uso do Certificado Digital A3. Sobre as janelas que você menciona, elas não aparecerão, pois toda a programação para listar e acessar o certificado deverá ser feito em Java, dentro do Applet. Existe somente um caso em que se você estiver usando o acesso ao Certificado por meio do Repositorio do Windows a janela de Senha do driver do Certificado A3 será exibida a primeira vez que você acessar o Certificado.

Att,

Maciel Gonçalves
Administrador (JavaC - Java Community)
Seguir no Twitter @macielgoncalves



Projeto NF-e, CT-e, CC-e? Comece Por Aqui!

Quer saber mais sobre NF-e? Acesse www.MACIELGONCALVES.com.br

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original." Albert Einstein
"Seja liberal naquilo que você aceita, e conservador naquilo que você propaga". Jon Postel.
"A coisa mais indispensável a um homem é reconhecer o uso que deve fazer do seu próprio conhecimento". Platão


Emissão de Documentos Fiscais para Desenvolvedores Java


Membros do fórum,

Usem a tag [code] e [/code] quando postarem Códigos Java e ou exemplos de XMLs.
Evitem tópicos duplicados.
Tópico solucionado? Edite o primeiro post e coloque [RESOLVIDO] no final do título.
Evitem reviver tópicos antigos.

O tópico resolveu seu problema? Seja gentil, comente e ou agradeça quem contribuiu com a solução.

Obrigado!

[WWW] [MSN]
macielgoncalves

Administrador
[Avatar]

Membro desde: 06/03/2011 14:49:25
Mensagens: 1233
Localização: Tubarão - SC
Offline

Ramon Pires wrote:O meu projeto nfe vai ser web,mas irá rodar em um servidor linux,eu queria saber se vcs tem algum exemplo com certificado a3 no linux,prq já pensei na possibilidade de virtualizar uma maquina windows apenas para trabalhar com o certificado a3.


Olá Ramon Pires,

Se você utilizar Certificado A3, não importa qual o SO do seu cervidor, pois o certificado deve ser instalado nas maquinas clientes (presumo que sejam windows).

Att,

Maciel Gonçalves
Administrador (JavaC - Java Community)
Seguir no Twitter @macielgoncalves



Projeto NF-e, CT-e, CC-e? Comece Por Aqui!

Quer saber mais sobre NF-e? Acesse www.MACIELGONCALVES.com.br

"A mente que se abre a uma nova ideia jamais voltará ao seu tamanho original." Albert Einstein
"Seja liberal naquilo que você aceita, e conservador naquilo que você propaga". Jon Postel.
"A coisa mais indispensável a um homem é reconhecer o uso que deve fazer do seu próprio conhecimento". Platão


Emissão de Documentos Fiscais para Desenvolvedores Java


Membros do fórum,

Usem a tag [code] e [/code] quando postarem Códigos Java e ou exemplos de XMLs.
Evitem tópicos duplicados.
Tópico solucionado? Edite o primeiro post e coloque [RESOLVIDO] no final do título.
Evitem reviver tópicos antigos.

O tópico resolveu seu problema? Seja gentil, comente e ou agradeça quem contribuiu com a solução.

Obrigado!

[WWW] [MSN]
 
Índice dos Fóruns » Artigos / Tutoriais
Ir para:   
Powered by JForum 2.1.9 © JForum Team