Login Registre-se
Handshake Failure Emissão de nfse abrasf.  XML
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Autor Mensagem
Marlúcio Pires

JavaC Membro
[Avatar]

Membro desde: 22/08/2014 09:27:32
Mensagens: 30
Offline

Estou enviando notas para a abrasf usando o código abaixo para carregar informações do certificado keystrore e tals.

Só que quando envio com um certificado e depois com outro de outro contribuinte recusa informando este erro.

Código erro: GOV14. Mensagem: Emissor não tem autorização de emitir notas para esse contribuinte.. Possível Correção: O emissor da nota deve ser o próprio contribuinte ou o contador.

Ele considera que o certificado anterior que está fazendo a comunicação com o web service.

Mas se eu derrubar o tomcat e abrir de novo a aplicação ele aceita usar o segundo, porém não deixa usar o primeiro, obtendo o mesmo erro. Ou seja somente fechando o java, a informação do primeiro certificado que conectou com este web service desaparece.

O interessante que para o web service da Nota Fiscal Eletrônica Modelo 55, funciona normalmente, com quantos certificados for necessários.
Alguém já passou por este problema?
ou que resolveu o Handshake failure?

Usando o keystore dinâmico http://www.javac.com.br/jc/posts/list/222-resolvendo-o-problema-4037-forbidden-para-certificado-a3-protocolsocketfactory.page, recebo o erro handshake failure.


Segue código:


 Nome do arquivo NfseJavac.rar [Disk] Download
 Descrição Projeto pronto para testar
 Tamanho 4007 Kbytes
 Baixado:  122 vez(es)

Esta mensagem foi editada 5 vezes. Última atualização foi em 28/07/2015 10:57:44

Laércio Souza

JavaC Membro

Membro desde: 19/08/2015 15:21:08
Mensagens: 4
Offline

Boa tarde Marlúcio, tudo bem?

Você conseguiu resolver ? Estou com o mesmo problema que o seu.

Abraços.
Marlúcio Pires

JavaC Membro
[Avatar]

Membro desde: 22/08/2014 09:27:32
Mensagens: 30
Offline

Bom dia!
Eu mesmo não consegui fazer.
Paguei um indiano no site Free Lancer . Saiu caro porque o site continuou me cobrando. Mas consegui resolver este problema cancelando meu cartão de crédito.
Saiu tudo por volta de 350,00.
Se quiser detalhes entre em contato comigo no Skype marluciopires.
GGarcia

JavaC Membro

Membro desde: 28/05/2013 17:12:21
Mensagens: 172
Offline

Bom dia.

A aplicação que desenvolvemos também funciona em cima de Tomcat e utilizamos vários certificados e emissões simultâneas e esse erro não ocorre.

- Como funciona suas emissões?
- Cada usuário tem a sua própria session?
- Você cria uma nova classe de envio, que inicializa o socketfactory com o certificado desejado a cada nota?
- A classe de sua model que instancia a Factory é synchronized para não haver erro de seleção de certificado?

Não é tão complicado de fazer isso funcionar.

If you're here, who's running hell?
Laércio Souza

JavaC Membro

Membro desde: 19/08/2015 15:21:08
Mensagens: 4
Offline

Bom dia GGarcia .

É feito do mesmo modo do método execRegistroProtocolo no post inicial do Marlúcio.
A cada nova nota eu crio o Socket dinamicamente.

Se eu faço com o Systems.setProperty, funciona normalmente.
// System.setProperty( "javax.net.ssl.keyStore" , pathCertificate);
// System.setProperty( "javax.net.ssl.keyStorePassword", passCertificate);

Lembrando que a NFe funciona normalmente com o mesmo método citado acima, o problema é apenas na NFS-e.

É como se não pegasse o certificado dessa forma.
GGarcia

JavaC Membro

Membro desde: 28/05/2013 17:12:21
Mensagens: 172
Offline

Nunca use System.setProperty. Você sempre terá esse tipo de problema e não vai conseguir alternar entre certificados e trabalhar com envios múltiplos.

Veja esse post:

http://www.javac.com.br/jc/posts/list/224-resolvendo-o-problema-4037-forbidden-para-certificado-a1-protocolsocketfactory.page

e implemente o SocketFactoryDinamico. Tem um ponto no código onde os System.setProperty estão comentados. Dali em diante está a solução para os seus problemas.

If you're here, who's running hell?
Laércio Souza

JavaC Membro

Membro desde: 19/08/2015 15:21:08
Mensagens: 4
Offline

Boa tarde !

Você não entendeu.

A minha duvida nesse fórum é justamente sobre o SocketFactoryDinamico.

Pois na NFe eu consegui fazer com ele, já na NFS-e não, porém setando de forma global funciona normalmente.
O que eu queria era justamente fazer de forma dinâmica como na NFe.

Mas acontece o erro Handshake, conforme explicado em todo o post(ocorre o erro apenas no SocketFactoryDinamico).

Não sei o que pode ser.
Utilizo o mesmo código que você passou no link e só funciona para a NFe e não para NFse.
GGarcia

JavaC Membro

Membro desde: 28/05/2013 17:12:21
Mensagens: 172
Offline

Entendi. Vamos lá...

Eu apenas suspeito que seja isso, mas não custa tentar:

Quando você busca pelo seu SSLContext, deve usar algo assim:



Quando você cria seu trustManager, se usa o socketFactoryDinamico, deve ser assim:



Daí você inicializa a trustStore


Ao gerar esses certificados, você está setando algum alias para eles?

Talvez seja o caso de inicializar esses caras com nomes de alias e chamar pela trustStore com eles.

Se o tomcat está com um certificado "travado", talvez o alias consiga driblar esse problema.

Se mesmo assim não der certo, teria de procurar algo para configurar no próprio Tomcat.

Esta mensagem foi editada 1 vez. Última atualização foi em 09/11/2015 14:48:22


If you're here, who's running hell?
Laércio Souza

JavaC Membro

Membro desde: 19/08/2015 15:21:08
Mensagens: 4
Offline

Boa tarde GGarcia, muito obrigado pela sua ajuda.

Estou utilizando a classe SocketFactoryDinamico, e percebi que em nenhum momento os métodos internos de criação do socket e truststore são chamados.

É como se faltasse setar alguma coisa para o cliente do webservice da NFS-e chamar esses caras.

Na Nfe ele starta normalmente.

Tenho quase certeza que seja esse o problema. Precisava achar o momento de startar esse socket.
Estou utilizando axis 1.6.
GGarcia

JavaC Membro

Membro desde: 28/05/2013 17:12:21
Mensagens: 172
Offline

Para cada nota que eu emito, eu inicio o socket para aquela conexão em específico e assim eu evito esse tipo de problema.

Você inicializa apenas na primeira vez, associando um certificado para ela e ele fica retido no socket, não sendo substituído.

Para cada nota, eu inicializo o socket e o certificado que ele vai usar com este método:



O SocketFactory deve ser semelhante ao que você usa.

Eu preparo o certificado antes de começar a gerar o XML. Se ocorrer qualquer tipo de problema com o certificado, o processo é interrompido e o usuário avisado do problema.

If you're here, who's running hell?
jeroqueiroz

Moderador
[Avatar]

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

Conseguiram implementar a emissão da NFSE com padrão ABRASF ?

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]
 
Índice dos Fóruns » NF-e / NFS-e / CT-e / CF-e / Certificados Digitais
Ir para:   
Powered by JForum 2.1.9 © JForum Team