Ir para conteúdo
  • Cadastre-se

dev botao

Erro -2 no ACBrMonitor no Linux


Ver Solução Respondido por wrmedeiros,
  • Este tópico foi criado há 3036 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Senhores,

Estou testando o ACBrMonitorPlus (0.3.06.0) em um Linux Mint 32 bits (interface MATE).

Configurei o certificado, CSC/Token/etc., mas ao fazer um teste de comunicação recebo a seguinte mensagem de erro:

ATENÇÃO: Chave RSA Privada NÃO pode ser lida no arquivo "swh.ini".

WebService Consulta Status serviço:
- Inativo ou Inoperante tente novamente.
Erro Interno: -2
Erro HTTP: 500

 

Buscando no fórum encontrei um tópico sobre o assunto onde recomendaram atualizar o OpenSSL. Fiz essa atualização, mas o erro persiste (OpenSSL 1.0.1t).

Existe algum flag que permita ter mais detalhes sobre esse erro? (debug)

Minha próxima tentativa é instalar o Lazarus no Mint e tentar debugar por lá, mas antes decidi postar a dúvida por aqui para saber se algum dos colegas tem ideia do que pode está ocorrendo (ou pelo menos uma forma de ter mais informações sobre o erro).

WRMedeiros

Focus

  • Fundadores
Postado

Muito provavelmente houve uma falha na carga do Certificado...

Por via das dúvidas, certifique-se que Path e permissões para o arquivo PFX estão corretas (assim como a senha)

Você consegue abrir a URL de consulta a Serviço no Browser ? (isso pode ajudar a testar o certificado e FireWall, proxy)

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.

Postado (editado)

@Daniel Simoes fiz os testes via browser, funcionou certinho (https://nfce.svrs.rs.gov.br/ws/NfeAutorizacao/NFeAutorizacao.asmx) - instalei o certificado, acessei a URL e os métodos foram exibidos.

Removi o ACBrMonitor no Linux, reinstalei, refiz a configuração do certificado do zero, não funciona.

Decidi então fazer um teste com a mesma versão no Windows (03.06.0 via OpenSSL), e funcionou perfeitamente.

Em outro tópico vi um comentário informando que esse erro -2 era do Synaser. Tem alguma forma do debug mostrar mais detalhes sobre o erro?

 

Editado por welkson

WRMedeiros

Focus

  • Fundadores
Postado

SynaSer é apenas para envio a portas Seriais...

O erro é dispara pelas classes de Socket da "Synapse"... pois ela tentou uma conexão HTTPS e recebeu o erro 500...

Eu uso com sucesso a comunicação segura no Linux...

Verifique se as Libs do OpenSSL são encontradas no seu S.O. com o nome esperado nos fontes... (se não o for, crie um Soft Link)

unit ssl_openssl_lib;   
....

{$IFDEF CIL}
const
  {$IFDEF LINUX}
  DLLSSLName = 'libssl.so';
  DLLUtilName = 'libcrypto.so';
  {$ELSE}
  DLLSSLName = 'ssleay32.dll';
  DLLUtilName = 'libeay32.dll';
  {$ENDIF}
{$ELSE}
var
  {$IFNDEF MSWINDOWS}
    {$IFDEF DARWIN}
    DLLSSLName: string = 'libssl.dylib';
    DLLUtilName: string = 'libcrypto.dylib';
    {$ELSE}
     {$IFDEF OS2}
      {$IFDEF OS2GCC}
    DLLSSLName: string = 'kssl.dll';
    DLLUtilName: string = 'kcrypto.dll';
      {$ELSE OS2GCC}
    DLLSSLName: string = 'ssl.dll';
    DLLUtilName: string = 'crypto.dll';
      {$ENDIF OS2GCC}
     {$ELSE OS2}
    DLLSSLName: string = 'libssl.so';
    DLLUtilName: string = 'libcrypto.so';
     {$ENDIF OS2}
    {$ENDIF}
  {$ELSE}
  DLLSSLName: string = 'ssleay32.dll';
  DLLSSLName2: string = 'libssl32.dll';
  DLLUtilName: string = 'libeay32.dll';
  {$ENDIF}
{$ENDIF} 

 

  • 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.

Postado

Criei os links, mas o erro persiste @Daniel Simoes.

 

cd /lib/i386-linux-gnu
ln -s libssl.so.1.0.0 libssl.so
ln -s libcrypto.so.1.0.0 libcrypto.so

ln -s /lib/i386-linux-gnu/libcrypto.so.1.0.0 /usr/lib/libcrypto.so
ln -s /lib/i386-linux-gnu/libcrypto.so/usr/lib/libssl.so libcrypto.so

 

WRMedeiros

Focus

Postado

Estou fazendo uns testes, creio que falta alguns pacotes no Linux como o cryptlib.

No fórum do Synapse encontrei algumas coisas... se conseguir eu posto aqui.

  • Curtir 1

WRMedeiros

Focus

  • Solution
Postado

@Daniel Simoes problema resolvido ;-)

sudo apt-get install libssl0.9.8:i386

 

No fórum do Synapse tem tópico com problema parecido e um usuário comentou que apartir do OpenSSL 1.0 o mesmo detecta automaticamente a versão do SSL. Sabendo disso, decidi fazer um downgrade para a libssl anterior a 1.0 e está funcionando.

http://forum.lazarus.freepascal.org/index.php?topic=14076.0

Mais pra frente creio que isso pode ter outros problemas, pois SSLv3 já vem sendo desabilitado em muitos servidores por ser inseguro (recomendam o uso do TLS). Mas enfim, obrigado a todos pelas dicas ;-)

  • Curtir 1

WRMedeiros

Focus

Postado

@Daniel Simoes enquanto é tempo, gostaria de retificar minha resposta anterior.

O downgrade em si não resolve o problema, e sim permissões corretas no libssl.so e libcrypto.so (ou rodar o ACBrMonitor como root como recomendado no site).

Eu estava rodando o ACBrMonitor como usuário comum (e fazendo as permissões nas pastas com chown e chmod). Quando fiz o chmod 777 (apesar de não ser recomendado) em /usr/lib/libssl.so e libcrypto.so o sistema funcionou normalmente (mesmo com a versão default do OpenSSL).

Creio que rodar ACBrMonitor com um usuário "não-root" no futuro vai me trazer outros problemas (permissões para acesso a dispositivos, etc.), então decidi deixar minha aplicação como usuário "não-root", e o ACBrMonitor como root (incluir um nopasswd no /etc/sudoers para rodar o ACBrMonitor sempre como root).

Segue comandos que utilizei:

sudo ln -s /lib/i386-linux-gnu/libcrypto.so.1.0.0 /usr/lib/libcrypto.so
sudo ln -s /lib/i386-linux-gnu/libssl.so.1.0.0 /usr/lib/libssl.so
chmod 777 /usr/lib/libssl.so
chmod 777 /usr/lib/libcrypto.so

 

 

  • Curtir 1

WRMedeiros

Focus

Postado

Sim @Daniel Simoes

Além da questão da permissão foi necessário criar o link simbólico, pois libssl.so e libcrypto.so realmente não existiam em /usr/lib e em /lib/i386-linux-gnu existiam mas com a versão no nome do arquivo. 

Muito obrigado pelas dicas.

  • Curtir 1

WRMedeiros

Focus

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