Ir para conteúdo
  • Cadastre-se

dev botao

OpenSSL - Erro "external: SIGSEGV"


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

Recommended Posts

Guest Adriano2020

[Ambiente de desenvolvimento]

- PC Intel Core i3 (8GB de RAM)
- Linux (Ubuntu 16.04 - x64)
- Lazarus (1.6 x64)

-----------------------------------------------------------

Pessoal, 

Estou com problema com OpenSSL. Ao tentar validar/assinar. Ocorre erro "external: SIGSEGV".


Estamos desenvolvendo nosso próprio sistema. Porem no nosso ocorre mesmo erro que o Demo do ACBr (por isso as telas do proprio ACBr, os erros são os mesmos). Tentamos Fedora, CentOS, Ubuntu. Ocorre o mesmo erro. Já pesquisamos exaustivamente no Google, aqui no forum... e nada de solução concreta. 

Detalhe: Usando ACBr normal, não instala os componentes.
E tivemos de utilizar o que esse topico instrui (so assim conseguimos instalar o ACBr) como fazer: Funcionando no Linux 64 bits

As telas ("tela1.png" / "tela2.png" / "tela3.png") mostram como ocorre.

Alguem ja passou por isso? Como resolver?
 

 

tela1.png

tela2.png

telas3.png

Link para o comentário
Compartilhar em outros sites

Guest Adriano2020

Queremos trabalhar em cima de x64. Já estavamos no 32 bits e o ACBr não instalava. 

O sistema já esta 90% concluido, trabalhando em cima do Linux x64. 

 

 

 

Sobre as telas, são essas aqui.

As telas ("tela1.png" / "tela2.png" / "tela3.png") mostram como ocorre.

tela1.png

tela2.png

 

Nessa linha ocorre o erro!

telas3.png

Editado por Adriano2020
Link para o comentário
Compartilhar em outros sites

Olá Adriano, boa tarde!

Então, na verdade, hoje é possível instalar o ACBrNFe e etc... no Linux 64bits sem, praticamente, nenhuma modificação do código baixado via svn. No entanto, como pode ser visto no tópico, que você mesmo citou, ainda estamos buscando uma solução para o pleno funcionamento. Eu também tenho acompanhado isso tudo há anos... e, agora acho que estamos bem perto de chegar nela!

O erro ocorre exatamente na hora de assinar o documento.

No finalzinho do tópico (linkado acima), percebe-se que que os esforços tem dado resultado. Mas, ainda não conseguimos fazer o Lazarus (ACBr) gerar a bendita assinatura. (Lembrando que possível assinar manualmente via terminal e etc...)

Neste último sábado, fiquei horas pelejando também, mas não tive nenhum avanço.

Sugiro que leia o tópico e faça testes no código das bibliotecas xmlsec e etc... Talvez você consiga ver algo que não vimos ainda.

O fato é que, somos nós mesmos quem temos que resolver.

Bem vindo ao fórum.

 

Att.

Messias Henrique

Link para o comentário
Compartilhar em outros sites

Guest Adriano2020

Olá Messias!
Valeu pelo retorno. Meu caro, precisamos (todos nós) nos empenharmos em solucionar isso.
Vou estudar melhor a dinamica do OpenSSL para compreender na integra.

Obrigado!

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Isso está na milha lista de prioridades... (mas ainda não consegui tempo para me debater sobre a questão)

Com as correções de "TLibHandle", conforme sugerido no tópico indicado pelo Messias Henrique, o A.V. para de ocorrer... mas mesmo assim,  a assinatura não é efetuada com sucesso...

 

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

Guest Adriano2020

Dentro desse contexto, vocês utilizam alguma alternativa?

Tipo, uma aplicação em outra maquina pra assinar/validar? Ou empregam outra ideia prática?

Link para o comentário
Compartilhar em outros sites

Bem Adriano.

No Linux, enquanto não temos a solução  para a versão 64bits, eu resolvi ficar com a versão 32bits mesmo.

Já no MacOS, eu tive que improvisar e consegui chamar, por linha de comando, o executável do xmlsec que assina o arquivo.

Isso também pode ser feito em Linux. Basta chamar através de um TProcess, por exemplo.

Veja bem, eu disse o executável e não a biblioteca dinâmica (dll ou so ou dynlib etc...)

Claro que é uma gambiarra, mas... é uma ideia... apenas.

 

Att.

Messias Henrique

Link para o comentário
Compartilhar em outros sites

Guest Adriano2020

Messias, interessante a ideia.

Me veio duas duvidas com seu comentario:

1 - É possivel então, usar o ACBr 100% sem modificações, no Linux 32 bits?
(lembrando que, pra usar no Linux 64 bits tive de usar aqueles .pas modificados que peguei num post, que comentei aqui)

2 - Tem como passar uma dica de como chamar esse executavel do xmlsec (e assinar)?
(TProcess do Lazarus, não tem segredo... é facil de usar)

Editado por Adriano2020
Link para o comentário
Compartilhar em outros sites

  • Moderadores
8 minutos atrás, Adriano Zanini disse:

Messias, interessante a ideia.

Me veio duas duvidas com seu comentario:

1 - É possivel então, usar o ACBr 100% sem modificações, no Linux 32 bits?
(lembrando que, pra usar no Linux 64 bits tive de usar aqueles .pas modificados que peguei num post, que comentei aqui)

2 - Tem como passar uma dica de como chamar esse executavel do xmlsec?
(TProcess do Lazarus, não tem segredo... é facil de usar)

 

Em 06/09/2016 at 10:47, Juliomar Marchetti disse:

Tenta usar o 32 bits mesmo assim no linux pra ver senão vai passar!

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores
19 minutos atrás, Adriano Zanini disse:

Messias, interessante a ideia.

Me veio duas duvidas com seu comentario:

1 - É possivel então, usar o ACBr 100% sem modificações, no Linux 32 bits?
(lembrando que, pra usar no Linux 64 bits tive de usar aqueles .pas modificados que peguei num post, que comentei aqui)

2 - Tem como passar uma dica de como chamar esse executavel do xmlsec (e assinar)?
(TProcess do Lazarus, não tem segredo... é facil de usar)

Estou sem tempo para (tentar) corrigir o suporte a XMLSec em 64 bits de forma definitiva...

De forma paliativa, vou criar eventos em TDFeSSL, que permitiriam um "callback" para a aplicação. Isso permitiria por exemplo que a própria aplicação, cuide do processo de assinatura, usando a linha de comando (com TPorcess)

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

25 minutos atrás, Daniel Simoes disse:

Estou sem tempo para (tentar) corrigir o suporte a XMLSec em 64 bits de forma definitiva...

De forma paliativa, vou criar eventos em TDFeSSL, que permitiriam um "callback" para a aplicação. Isso permitiria por exemplo que a própria aplicação, cuide do processo de assinatura, usando a linha de comando (com TPorcess)

 

Excelente ideia.

Assim, fica bem mais simples.

Normalmente, era necessário fazer intervenções no código ACBr. Então, toda vez que atualizava via svn, quebrava o código...

Se tiver como dar um ok aqui nesse tópico assim que esse evento estiver comitado

, seria de grande auxílio.

1 hora atrás, Adriano Zanini disse:

Messias, interessante a ideia.

Me veio duas duvidas com seu comentario:

1 - É possivel então, usar o ACBr 100% sem modificações, no Linux 32 bits?
(lembrando que, pra usar no Linux 64 bits tive de usar aqueles .pas modificados que peguei num post, que comentei aqui)

2 - Tem como passar uma dica de como chamar esse executavel do xmlsec (e assinar)?
(TProcess do Lazarus, não tem segredo... é facil de usar)

1) Sim, no Linux 32bits é possível sem, praticamente nenhuma modificação nos fontes. Basta que as libs (open, xml2, xmlsec) sejam instaladas do jeito que o ACBr espera. Normalmente tem instalar a xmlsec no braço (make, make install) e também criar links simbólicos adequados dependendo da distribuição.

2) Até amanhã, eu ṕosto aqui uma maneira de chamar o executável (xmlsec1) para assinar o xml. (a título de sugestão, é claro)

Att.

Messias Henrique

Link para o comentário
Compartilhar em outros sites

  • Fundadores

O Evento foi criado... commit [r12363]

Citar

-- ACBrDFe, ACBrDFeSSL --
[+] Adicionado o evento "OnAntesDeAssinar: TDFeSSLAntesDeAssinar", que permite a
    aplicação, controlar o processo de assinatura, usando por exemplo, algum
    utilitário externo para a assinatura. Se o valor de "ConteudoXML" for
    modificado pela aplicação, o TDFeSSL não tentará assinar o documento
    internamente.  (por: DSA)     

 

No tópico abaixo, o colega @almp1, cita um exemplo de como usar o "xmlsec" por linha de comando para efetuar a assinatura do XML

 

Também enviei para o SVN, as correções necessárias para compilação em Lazarus 64, FPC 3

Citar

-- libexslt, libxml2, libxslt --
[*] Ajustes para correta compilação no Lazarus FPC 64 bits (por: DSA)

 

  • Curtir 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

5 horas atrás, Daniel Simoes disse:

O Evento foi criado... commit [r12363]

Excelente!

5 horas atrás, Daniel Simoes disse:

No tópico abaixo, o colega @almp1, cita um exemplo de como usar o "xmlsec" por linha de comando para efetuar a assinatura do XML

É exatamente como o colega @almp1(André) citou no post.

Mas se precisarem de mais informações, tem aqui , aqui para extrair as chaves do certificado... e também aqui (onde me ajudou bastante).

Bem, por ora, muito obrigado  @Daniel Simoes e todos que tem se esforçado nesse empreito.

Att.

Messias Henrique

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Guest Adriano2020

@Daniel Simoes, @messiashenrique, @Juliomar Marchetti

Obrigado pelas sugestões praticas. Vou estudar tudo isso que enviaram. Já deu um  norte pra saber por onde ir. Conforme for progredindo aqui, vou postando o andamento.

Valeu, obrigado!

Link para o comentário
Compartilhar em outros sites

Olá PessoALL

Também estou na mesma empreitada precisando rodar a assinatura no Linux 64bits, evoluímos um pouco conforme comentado acima, mas também precisei me envolver com outros projetos e o 64 ficou um pouco de lado. Nas próximas semanas estarei retomando o assunto. 

Apenas para conhecimento de vocês, eu consegui passar pela assinatura, porém, o hash da assinatura no xml é incluído no lugar errado.

Estou enviando anexo o XML assinado "de forma errada" no Linux 64 bits

Abraços,

35160923183669000161550010000000011000000012-nfe.xml

André Medeiros

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
Guest Adriano2020

Ainda na luta...

Consegui compilar a "libxmlsec1.so". Baixei os fontes e recompilei (ficou  com 5MB, o original tem apenas 384kb). Coloquei na usr/local/lib. Substituindo a existente.

Para baixar fontes e recompilar no linux, segui as dicas desse link (topico): Tópico.

Antes, conforme esse topico, dava esse erro: Imagem.  Agora, apos substitui e usar e novo "libxmlsec1.so", ocorre o seguinte erro (conforme imagem em anexo): 

"Error: unable to load default xmlsec-crypto library. Make sure that you have it installed and check shared libraries path (LD_LIBRARY_PATH) environment variable. Press OK to ignore and risk data corruption. Press Cancel to kill the program. "

Sabem a razão desse erro e como corrigir?

Captura de tela de 2016-10-13 15-20-35.png

Editado por Adriano2020
Link para o comentário
Compartilhar em outros sites

Guest Adriano2020

- Linux (Ubuntu 16.04 - x64)
- Lazarus (1.6 x64)

Conforme imagem, mostra onde esta a biblioteca e o valor da variavel da embiente "LD_LIBRARY_PATH"

 

Captura de tela de 2016-10-13 16-02-34.png

Link para o comentário
Compartilhar em outros sites

Ok !

Faz um tempo que eu não uso mais ubuntu (na minha opinião a melhor distro desktop), mas precisei migrar para CentOS há mais de um ano, a partir dai todos os meus testes foram com ele.

Já tive este mesmo problema, no caso do CentOS instalei os pacotes "devel" do próprio repositório usando yum. 

Os pacotes necessários foram

xmlsec1-devel
xmlsec1-gcrypt-devel
xmlsec1-gnutls-devel
xmlsec1-nss-devel
xmlsec1-openssl-devel

Acredito que seja possível instalar usando apt-get para já resolver as dependências 

Provavelmente com estes pacotes você ira resolver o problema acima. Mas a assinatura no Linux 64bits ainda tem sido um problema.

Espero que ajude 

Abraços,

André Medeiros

Link para o comentário
Compartilhar em outros sites

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.