Login Registre-se
Usar repositório de certificados do windows  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
mateusviccari

JavaC Membro

Membro desde: 12/11/2011 11:14:27
Mensagens: 68
Offline

Olá, pra quem ja usou o sistema de emissao de nfe da sefaz viu que tem um jeito muito facil de usar o certificado do cliente: usando o repositorio de certificados do windows, aonde vc seleciona o certificado do cliente e ele sempre vai dar certo...
Ja vi outros programas de emissão de nfe que usam um arquivo .cer que voce consegue exportar a partir do repositorio do windows, e nao importa se o certificado é a1 ou a3, sempre funciona tambem.
Gostaria de saber como faço pra acessar os certificados do repositorio do windows pra fazer o envio das minhas nfe.
macielgoncalves

Administrador
[Avatar]

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

Olá mateusviccari,

Existe um link no JavaC sobre sua dúvida, postado por um dos membros. Eu não utilizei dessa forma ainda, mas você pode iniciar com o exemplo do link abaixo. Por favor compartilhe o resultado de seus testes com a nossa Comunidade.

Classe manipular certificado ( listar,selecionar e assinar,...)

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: 1236
Localização: Tubarão - SC
Offline

Olá Pessoal,

Complementando o tópico, eu criei um exemplo para acesso dos Dados do Certificado por meio do Repositório do Windows, segue abaixo link para acesso:

Dados do Certificado Digital A1 e A3 (Repositório do 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]
flpmchd

JavaC Membro
[Avatar]

Membro desde: 18/05/2016 19:11:20
Mensagens: 15
Localização: Rio Branco - AC
Offline

Como que assina pegando os dados do Repositório do Windows?

Já tentei usando os métodos já listados aqui no JavaC, mas não consegui.

Um amigo me passou um método, mas não sei como pegar esse parâmetro em byte[]

Cleonir

JavaC Membro
[Avatar]

Membro desde: 06/04/2018 14:07:33
Mensagens: 11
Localização: Dois Vizinhos-PR
Offline

Olá, flpmchd
Não entendi bem a sua dúvida. Você quer saber como carrega o certificado ou como faz assinatura?
Vou postar um método que uso para assinatura de XML:

O manager certificado é apenas um gerenciador (Para facilitar as coisas). Você pode trocar ele e mandar o certificado direto para pegar a chave dele.
O Node passado por parâmetro é o cara que você quer assinar. Ele vai inserir a assinatura no documento 'pai' através de referência.
[Email]
flpmchd

JavaC Membro
[Avatar]

Membro desde: 18/05/2016 19:11:20
Mensagens: 15
Localização: Rio Branco - AC
Offline

Olá Cleonir

Nem eu sei mais o que estou precisando. estou vendo isso a quase 1 mes e não estou conseguindo.

a aplicação web que estou modificando já tem um método para logar com certificado e com isso consigo pegar o certificado que pode ser tanto A1 como A3. Pelo método postado neste post: http://www.javac.com.br/jc/posts/list/122.page, não consigo gerar o provider pq eu pego o X509certificate da session da aplicação jsp. tentei converter de alguma forma, mas não consegui.

Já neste seu método, creio que preciso dessa sua classe ManagerCertificado pq o método que pega a chave está nela. Preciso saber as bibliotecas que você usou também.

Obrigado pelo retorno.
Cleonir

JavaC Membro
[Avatar]

Membro desde: 06/04/2018 14:07:33
Mensagens: 11
Localização: Dois Vizinhos-PR
Offline

Opa

flpmchd, entendi sua situação. Vamos lá:
1 - Primeiramente você vai precisar carregar o KeyStore:

2 - Você precisa pegar o { SubjectDN } do seu certificado. Através dele vamos carregar o certificado do repositório da seguinte forma:

Pode ignorar o tipo de certificado. No meu caso eu tenho o tipo dele e a senha. Mas, no seu não vamos ter. Então vamos se basear apenas no { subjectDN }.

3 - Vamos carregar a PK do certificado aqui:

Ignore a senha, pode passar NULL. Para casos de certificado A1 vai funcionar 100%. Certificados do tipo A3 vão solicitar senha. Caso você esteja em uma nova sessão.
Eu consigo 'ludibriar' o windows. Meu software não pede senha para os usuários. Mesmo sendo certifico A3. Mas, no meu caso eu sei o tipo do certificado e também tenho a senha dele. No seu caso é diferente.
Vamos implementar essa parte primeiro. Testa com certificado A1. Depois que você fazer ela funcionar, vamos verificar como fica com o A3.

Importante: Estou considerando ambiente windows. Para identificar o tipo de S.O. você pode usar a classe { Platform } do pacote JNA.

Tenta aí e posta retorno.
Abraço!
[Email]
flpmchd

JavaC Membro
[Avatar]

Membro desde: 18/05/2016 19:11:20
Mensagens: 15
Localização: Rio Branco - AC
Offline

Bom dia!

Não consegui entender muito bem o seu método. Você disse que não precisa do tipo, mas ele usa uma classe que pede, então não sei como alterá-lo. Se quiser eu consigo pegar o tipo do certificado e também já tinha criado uma rotina para pegar a senha do usuário se ajudar. Não tenho tanta experiência com Java como gostaria.

Obrigado por estar me ajudando
Cleonir

JavaC Membro
[Avatar]

Membro desde: 06/04/2018 14:07:33
Mensagens: 11
Localização: Dois Vizinhos-PR
Offline

Certo,

Passa o { subjectDN } do certificado. A variável { privateKey } vai ser a chave dele.

[Email]
flpmchd

JavaC Membro
[Avatar]

Membro desde: 18/05/2016 19:11:20
Mensagens: 15
Localização: Rio Branco - AC
Offline

Modifiquei algumas coisas e vou postar como está:



Essa é a classe que cria o Xml que preciso assinar.



Este o método que você me passou para assinar, mas está faltando o KeyInfo e também não consegui transformar o xml em Element

Cleonir

JavaC Membro
[Avatar]

Membro desde: 06/04/2018 14:07:33
Mensagens: 11
Localização: Dois Vizinhos-PR
Offline

Opa,

Achei que você já tinha finalizado essa parte...

Vamos lá então:
Gerar o { KeyInfo}:

Primeiramente você precisa transformar o teu XML em { Document }. Depois que você vai começar a trabalhar com os nodes. Faça isso primeiro e depois use o comando abaixo para pegar o node que você quer assinar:

* No código acima imaginei que você queira assinar a tag { infCiencia }. Mas, é só um exemplo!
[Email]
flpmchd

JavaC Membro
[Avatar]

Membro desde: 18/05/2016 19:11:20
Mensagens: 15
Localização: Rio Branco - AC
Offline

Opa, Cleonir,

Ficou assim:



Você acha que vai funcionar? pq não tenho como testar, pois não me disponibilizaram um certificado A3 para testar. Tenho que colocar online para algum contribuinte tentar.
Cleonir

JavaC Membro
[Avatar]

Membro desde: 06/04/2018 14:07:33
Mensagens: 11
Localização: Dois Vizinhos-PR
Offline

Opa,

Mas com certificado A1 funcionou? Você testou?
Não vou dizer que seja impossível funcionar sem testar, mas vai ser mais ou menos por aí!
Você precisa debugar o teste inclusive, para ver se está sendo executado corretamente.
Infelizmente nessa parte não consigo te ajudar.

Testa com A1. Se funcionar, provavelmente vai funcionar com o A3 também (Só vai pedir senha).
[Email]
 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team