Ir para conteúdo
  • Cadastre-se

dev botao

Resolvendo "Segmentation Fault" na ACBrLibNFe no exemplo NodeJS MultiThead - causa: Certificado


  • Este tópico foi criado há 138 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Consultores

Alguns dias atrás, eu postei aqui uma notícia de um exemplo em NodeJS para uso da ACBrLibNFe cedido por um usuário, clique aqui para ir para o post.

Ele se baseou em um outro exemplo, conforme o post original. Mas alguns usuários relataram problemas como Segmentation fault, senha inválida ou erro ao ler certificado. Isso pode acontecer devido a incompatibilidade do certificado com a OpenSSL. Mas é fácil de resolver.

Vamos ao testes:
Primeiro ambiente Linux Mint 21 derivado do Ubuntu 22.04.
Utilizando Node 12 e OpenSSL 1.1.1.1 Foram realizados com sucesso os testes em Multi-thread.
Observe que temos 2 navegadores requisitando o status da Sefaz.
Screenshot_540.png

Neste caso node 12, não funciona com OpenSSL 3.x.x.x com a lib.

Agora vamos testar com a OpenSSL 3.

Atenção: Para utilizar openssl 3.x.x.x, pode ser necessário instalar o certificado e após isso exportar ele novamente. Isso vai fazer com que ele seja recriado com "rotinas mais modernas" o que vai possibilitar a leitura no OpenSSL 3.x.x.x.
Para saber mais, clique aqui.

Veja abaixo como fazer na imagem:

Screenshot_542.png

Instalado a versão OpenSSL 3.x.x.x parou de funcionar no meu ambiente com Node12. E mesmo instalando a versão Node16, o erro Segmentation fault persistiu. Em pesquisas encontrei que: "Node.js v17.x, v18.x, and v19.x use OpenSSL v3."

Então Instalei o Node20 ! Agora meu ambiente está com Ubuntu 22.04, Node20 e OpenSSL 3.X

Antes que me pergunte, sim, utilizei o mesmo exemplo construido no Node12. Ele funciona no Node16 e também funcionou no Node20 (foi uma das barreiras que enfrentei por não dominar a linguagem).
Para que funcione, você precisa apagar a pasta Node_modules e os arquivos package.json e package-lock.json para que eles possam ser recriados com suas novas versões.

Screenshot_541.png


Após isso precisa instalar os pacotes requeridos. Para saber qual, basta executar o exemplo.. Ao dar o erro ele vai mostrar o pacote faltando do Node.
Observação importante: Verifique o ArquivoLog criado. Nele é apontado onde foi criado o arquivo acbrlib.ini. No meu caso em "\usr\bin".

Precisei editar (em modo root) após trocar de VM, pois os paths não estavam corretos.
Screenshot_539.png

Concluindo, o Node20:

Suporta OpenSSL3, com a ACBrLibNFe MT Atual e com o INI Correto? Vamos aos testes...

Screenshot_538.png

Realizado os testes no Ubuntu 22.04, OpenSSL 3, Node20 com Sucesso!

Observe que tanto FireFox quanto Chrome estão recebendo reposta do certificado, com sucesso.

Eu precisei fazer algumas alterações nos fontes do exemplo original, então vou anexar para que você possa sobrescrever = reqMt-alterado.zip

Lembre-se de alterar os caminhos do certificados, paths e deixar de acordo com o seu ambiente.
Espero ter ajudado!

Editado por EMBarbosa
Layout do texto. Deixar mais claro que precisa exportar o certificado.
  • Curtir 5
Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Link para o comentário
Compartilhar em outros sites

  • EMBarbosa changed the title to Resolvendo "Segmentation Fault" na ACBrLibNFe no exemplo NodeJS MultiThead - causa: Certificado
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.